diff --git a/src/languages/de.evoal.languages.model.base/model/model.ecore b/src/languages/de.evoal.languages.model.base/model/model.ecore
index 143ea8c7fd535e929019f7c39d0e479131ce872a..469ab870e1b05ce719786f6787d81df6c09a3c2d 100644
--- a/src/languages/de.evoal.languages.model.base/model/model.ecore
+++ b/src/languages/de.evoal.languages.model.base/model/model.ecore
@@ -379,6 +379,12 @@
         eType="#//Value" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Instance" eSuperTypes="#//Literal">
+    <eOperations name="findAttribute" eType="#//Attribute">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return this.getAttributes()&#xA;                 .stream()&#xA;                 .filter(n -> name.equals(n.getDefinition().getName()))&#xA;                 .findFirst()&#xA;                 .orElse(null);"/>
+      </eAnnotations>
+      <eParameters name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="definition" lowerBound="1"
         eType="#//TypeDefinition"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
diff --git a/src/languages/de.evoal.languages.model.base/model/model.genmodel b/src/languages/de.evoal.languages.model.base/model/model.genmodel
index 6024b206f035ce588411784e6198a4fac514882d..4ef979ffcfb5f4719a484787e30100c08224d74a 100644
--- a/src/languages/de.evoal.languages.model.base/model/model.genmodel
+++ b/src/languages/de.evoal.languages.model.base/model/model.genmodel
@@ -173,6 +173,9 @@
     <genClasses ecoreClass="model.ecore#//Instance">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference model.ecore#//Instance/definition"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference model.ecore#//Instance/attributes"/>
+      <genOperations ecoreOperation="model.ecore#//Instance/findAttribute" body="return this.getAttributes()&#xA;                 .stream()&#xA;                 .filter(n -> name.equals(n.getDefinition().getName()))&#xA;                 .findFirst()&#xA;                 .orElse(null);">
+        <genParameters ecoreParameter="model.ecore#//Instance/findAttribute/name"/>
+      </genOperations>
     </genClasses>
     <genClasses ecoreClass="model.ecore#//Attribute">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference model.ecore#//Attribute/definition"/>
diff --git a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/BasePackage.java b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/BasePackage.java
index 1e825e035b5a010a3401d7110fac150fba7d4ed2..fe39e80e4d3cea2efa4c75f5cb0b9daebb37d967 100644
--- a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/BasePackage.java
+++ b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/BasePackage.java
@@ -1748,6 +1748,15 @@ public interface BasePackage extends EPackage {
 	 */
 	int INSTANCE___GET_VALUE = LITERAL___GET_VALUE;
 
+	/**
+	 * The operation id for the '<em>Find Attribute</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE___FIND_ATTRIBUTE__STRING = LITERAL_OPERATION_COUNT + 0;
+
 	/**
 	 * The number of operations of the '<em>Instance</em>' class.
 	 * <!-- begin-user-doc -->
@@ -1755,7 +1764,7 @@ public interface BasePackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int INSTANCE_OPERATION_COUNT = LITERAL_OPERATION_COUNT + 0;
+	int INSTANCE_OPERATION_COUNT = LITERAL_OPERATION_COUNT + 1;
 
 	/**
 	 * The meta object id for the '{@link de.evoal.languages.model.base.impl.AttributeImpl <em>Attribute</em>}' class.
@@ -2853,6 +2862,16 @@ public interface BasePackage extends EPackage {
 	 */
 	EReference getInstance_Attributes();
 
+	/**
+	 * Returns the meta object for the '{@link de.evoal.languages.model.base.Instance#findAttribute(java.lang.String) <em>Find Attribute</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Find Attribute</em>' operation.
+	 * @see de.evoal.languages.model.base.Instance#findAttribute(java.lang.String)
+	 * @generated
+	 */
+	EOperation getInstance__FindAttribute__String();
+
 	/**
 	 * Returns the meta object for class '{@link de.evoal.languages.model.base.Attribute <em>Attribute</em>}'.
 	 * <!-- begin-user-doc -->
@@ -3800,6 +3819,14 @@ public interface BasePackage extends EPackage {
 		 */
 		EReference INSTANCE__ATTRIBUTES = eINSTANCE.getInstance_Attributes();
 
+		/**
+		 * The meta object literal for the '<em><b>Find Attribute</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation INSTANCE___FIND_ATTRIBUTE__STRING = eINSTANCE.getInstance__FindAttribute__String();
+
 		/**
 		 * The meta object literal for the '{@link de.evoal.languages.model.base.impl.AttributeImpl <em>Attribute</em>}' class.
 		 * <!-- begin-user-doc -->
diff --git a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/Instance.java b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/Instance.java
index 9c77064922d8279928ca90721cc335b6c2b6c51e..507ec681c3af13bed06a375aec86f14107194733 100644
--- a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/Instance.java
+++ b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/Instance.java
@@ -56,4 +56,12 @@ public interface Instance extends Literal {
 	 */
 	EList<Attribute> getAttributes();
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model nameRequired="true"
+	 * @generated
+	 */
+	Attribute findAttribute(String name);
+
 } // Instance
diff --git a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/BasePackageImpl.java b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/BasePackageImpl.java
index 4266a5e443f6ae8a716889907d37f4cdb6e429aa..494860c82fc29a1bc627a6d2f0c4dab965922beb 100644
--- a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/BasePackageImpl.java
+++ b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/BasePackageImpl.java
@@ -1417,6 +1417,16 @@ public class BasePackageImpl extends EPackageImpl implements BasePackage {
 		return (EReference)instanceEClass.getEStructuralFeatures().get(1);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getInstance__FindAttribute__String() {
+		return instanceEClass.getEOperations().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1653,6 +1663,7 @@ public class BasePackageImpl extends EPackageImpl implements BasePackage {
 		instanceEClass = createEClass(INSTANCE);
 		createEReference(instanceEClass, INSTANCE__DEFINITION);
 		createEReference(instanceEClass, INSTANCE__ATTRIBUTES);
+		createEOperation(instanceEClass, INSTANCE___FIND_ATTRIBUTE__STRING);
 
 		attributeEClass = createEClass(ATTRIBUTE);
 		createEReference(attributeEClass, ATTRIBUTE__DEFINITION);
@@ -1862,6 +1873,9 @@ public class BasePackageImpl extends EPackageImpl implements BasePackage {
 		initEReference(getInstance_Definition(), this.getTypeDefinition(), null, "definition", null, 1, 1, Instance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getInstance_Attributes(), this.getAttribute(), null, "attributes", null, 0, -1, Instance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		EOperation op = initEOperation(getInstance__FindAttribute__String(), this.getAttribute(), "findAttribute", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "name", 1, 1, IS_UNIQUE, IS_ORDERED);
+
 		initEClass(attributeEClass, Attribute.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getAttribute_Definition(), this.getAttributeDefinition(), null, "definition", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getAttribute_Value(), this.getValue(), null, "value", null, 0, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/InstanceImpl.java b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/InstanceImpl.java
index 2235356f70392cc5fc12bd30428d2acf7d4b8925..91206e2e8d7960cb5ccc8ea60327393691a5feb9 100644
--- a/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/InstanceImpl.java
+++ b/src/languages/de.evoal.languages.model.base/src-gen/de/evoal/languages/model/base/impl/InstanceImpl.java
@@ -7,6 +7,7 @@ import de.evoal.languages.model.base.BasePackage;
 import de.evoal.languages.model.base.Instance;
 import de.evoal.languages.model.base.TypeDefinition;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -129,6 +130,20 @@ public class InstanceImpl extends LiteralImpl implements Instance {
 		return attributes;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Attribute findAttribute(final String name) {
+		return this.getAttributes()
+		                 .stream()
+		                 .filter(n -> name.equals(n.getDefinition().getName()))
+		                 .findFirst()
+		                 .orElse(null);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -214,4 +229,18 @@ public class InstanceImpl extends LiteralImpl implements Instance {
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case BasePackage.INSTANCE___FIND_ATTRIBUTE__STRING:
+				return findAttribute((String)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
 } //InstanceImpl
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
index 6e7ddd221d74618f635b2ab52dfc07a6e0ad3322..550279cd638e144c85e01422606c261ed2f43af8 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
+++ b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
@@ -6512,9 +6512,9 @@ rule__DataReferenceRule__DefinitionAssignment
 	(
 		{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_0()); }
 		(
-			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1()); }
-			ruleStringOrId
-			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1()); }
+			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1()); }
 		)
 		{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_0()); }
 	)
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
index f7c5e037d746dd90d5ad60568b869f2cfb211df4..e8571f0ebfaf0ee66f2725a35d92e94dba3031f2 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
@@ -21575,34 +21575,34 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__DataReferenceRule__DefinitionAssignment"
-    // InternalDataDescriptionLanguage.g:6507:1: rule__DataReferenceRule__DefinitionAssignment : ( ( ruleStringOrId ) ) ;
+    // InternalDataDescriptionLanguage.g:6507:1: rule__DataReferenceRule__DefinitionAssignment : ( ( ruleQualifiedName ) ) ;
     public final void rule__DataReferenceRule__DefinitionAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalDataDescriptionLanguage.g:6511:1: ( ( ( ruleStringOrId ) ) )
-            // InternalDataDescriptionLanguage.g:6512:2: ( ( ruleStringOrId ) )
+            // InternalDataDescriptionLanguage.g:6511:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalDataDescriptionLanguage.g:6512:2: ( ( ruleQualifiedName ) )
             {
-            // InternalDataDescriptionLanguage.g:6512:2: ( ( ruleStringOrId ) )
-            // InternalDataDescriptionLanguage.g:6513:3: ( ruleStringOrId )
+            // InternalDataDescriptionLanguage.g:6512:2: ( ( ruleQualifiedName ) )
+            // InternalDataDescriptionLanguage.g:6513:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_0()); 
             }
-            // InternalDataDescriptionLanguage.g:6514:3: ( ruleStringOrId )
-            // InternalDataDescriptionLanguage.g:6515:4: ruleStringOrId
+            // InternalDataDescriptionLanguage.g:6514:3: ( ruleQualifiedName )
+            // InternalDataDescriptionLanguage.g:6515:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1()); 
+               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1()); 
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1()); 
+               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1()); 
             }
 
             }
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin
index 6f1de12b50f4d21b13f420db20e115c29dcdb209..510e4bcf0dcf13beffa7c34ea655c448582e666a 100644
Binary files a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin and b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
index 27d7392dce29ca6c107fb926f8a9e35c7b761dfa..d4e93bf36c898516939f85ce58edf38173a174c4 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
@@ -806,7 +806,7 @@ ruleDataReferenceRule returns [EObject current=null]
 			{
 				newCompositeNode(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_0());
 			}
-			ruleStringOrId
+			ruleQualifiedName
 			{
 				afterParserOrEnumRuleCall();
 			}
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
index d82e0bb778fc4fe3ebe8deb05b380fdbad14dd1d..052598b4547294b688ed1539cad2f9c8fc8fb6d4 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
@@ -2211,7 +2211,7 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleDataReferenceRule"
-    // InternalDataDescriptionLanguage.g:789:1: ruleDataReferenceRule returns [EObject current=null] : ( ( ruleStringOrId ) ) ;
+    // InternalDataDescriptionLanguage.g:789:1: ruleDataReferenceRule returns [EObject current=null] : ( ( ruleQualifiedName ) ) ;
     public final EObject ruleDataReferenceRule() throws RecognitionException {
         EObject current = null;
 
@@ -2219,14 +2219,14 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalDataDescriptionLanguage.g:795:2: ( ( ( ruleStringOrId ) ) )
-            // InternalDataDescriptionLanguage.g:796:2: ( ( ruleStringOrId ) )
+            // InternalDataDescriptionLanguage.g:795:2: ( ( ( ruleQualifiedName ) ) )
+            // InternalDataDescriptionLanguage.g:796:2: ( ( ruleQualifiedName ) )
             {
-            // InternalDataDescriptionLanguage.g:796:2: ( ( ruleStringOrId ) )
-            // InternalDataDescriptionLanguage.g:797:3: ( ruleStringOrId )
+            // InternalDataDescriptionLanguage.g:796:2: ( ( ruleQualifiedName ) )
+            // InternalDataDescriptionLanguage.g:797:3: ( ruleQualifiedName )
             {
-            // InternalDataDescriptionLanguage.g:797:3: ( ruleStringOrId )
-            // InternalDataDescriptionLanguage.g:798:4: ruleStringOrId
+            // InternalDataDescriptionLanguage.g:797:3: ( ruleQualifiedName )
+            // InternalDataDescriptionLanguage.g:798:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -2246,7 +2246,7 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
               			
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/serializer/DataDescriptionLanguageSemanticSequencer.java b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/serializer/DataDescriptionLanguageSemanticSequencer.java
index 9b2e91be3a655051a58008bc7cb0aa4e6e0355da..dc8cb1175ccdcc20546afe2f5f90d474f4533c9a 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/serializer/DataDescriptionLanguageSemanticSequencer.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/serializer/DataDescriptionLanguageSemanticSequencer.java
@@ -234,7 +234,7 @@ public class DataDescriptionLanguageSemanticSequencer extends BaseLanguageSemant
 	 *     ValueRule returns DataReference
 	 *
 	 * Constraint:
-	 *     definition=[DataDescription|StringOrId]
+	 *     definition=[DataDescription|QualifiedName]
 	 * </pre>
 	 */
 	protected void sequence_DataReferenceRule(ISerializationContext context, DataReference semanticObject) {
@@ -243,7 +243,7 @@ public class DataDescriptionLanguageSemanticSequencer extends BaseLanguageSemant
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DdlPackage.Literals.DATA_REFERENCE__DEFINITION));
 		}
 		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1(), semanticObject.eGet(DdlPackage.Literals.DATA_REFERENCE__DEFINITION, false));
+		feeder.accept(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1(), semanticObject.eGet(DdlPackage.Literals.DATA_REFERENCE__DEFINITION, false));
 		feeder.finish();
 	}
 	
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
index f0cac54754451bd8c77cf9a4e17e46a851021ab0..e579cae5330f690545b75119df74d9003b6fce0e 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
@@ -475,21 +475,21 @@ public class DataDescriptionLanguageGrammarAccess extends AbstractElementFinder.
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.evoal.languages.model.ddl.dsl.DataDescriptionLanguage.DataReferenceRule");
 		private final Assignment cDefinitionAssignment = (Assignment)rule.eContents().get(1);
 		private final CrossReference cDefinitionDataDescriptionCrossReference_0 = (CrossReference)cDefinitionAssignment.eContents().get(0);
-		private final RuleCall cDefinitionDataDescriptionStringOrIdParserRuleCall_0_1 = (RuleCall)cDefinitionDataDescriptionCrossReference_0.eContents().get(1);
+		private final RuleCall cDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1 = (RuleCall)cDefinitionDataDescriptionCrossReference_0.eContents().get(1);
 		
 		//DataReferenceRule returns DataReference:
-		//    definition = [DataDescription|StringOrId]
+		//    definition = [DataDescription|QualifiedName]
 		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//definition = [DataDescription|StringOrId]
+		//definition = [DataDescription|QualifiedName]
 		public Assignment getDefinitionAssignment() { return cDefinitionAssignment; }
 		
-		//[DataDescription|StringOrId]
+		//[DataDescription|QualifiedName]
 		public CrossReference getDefinitionDataDescriptionCrossReference_0() { return cDefinitionDataDescriptionCrossReference_0; }
 		
-		//StringOrId
-		public RuleCall getDefinitionDataDescriptionStringOrIdParserRuleCall_0_1() { return cDefinitionDataDescriptionStringOrIdParserRuleCall_0_1; }
+		//QualifiedName
+		public RuleCall getDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1() { return cDefinitionDataDescriptionQualifiedNameParserRuleCall_0_1; }
 	}
 	public class SelfReferenceRuleElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.evoal.languages.model.ddl.dsl.DataDescriptionLanguage.SelfReferenceRule");
@@ -811,7 +811,7 @@ public class DataDescriptionLanguageGrammarAccess extends AbstractElementFinder.
 	}
 	
 	//DataReferenceRule returns DataReference:
-	//    definition = [DataDescription|StringOrId]
+	//    definition = [DataDescription|QualifiedName]
 	//;
 	public DataReferenceRuleElements getDataReferenceRuleAccess() {
 		return pDataReferenceRule;
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtext b/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtext
index eb7ec246641fd02fdec9603421f2bc5f079f92b2..f1f2bfebed504c6d6f408af0b77919bd2d68ba28 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtext
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtext
@@ -15,7 +15,6 @@ DataDescriptionModelRule returns DataDescriptionModel:
 		('data' ':' (descriptions += DataDescriptionRule)* )?
 		('constraints' ':' (constraints += StatementRule)*)?
 	'}'
-	
 ;
 
 ImportRule returns Import:
@@ -66,7 +65,7 @@ ReferenceRule returns base::ValueReference:
 ;
 
 DataReferenceRule returns DataReference:	
-	definition = [DataDescription|StringOrId]
+	definition = [DataDescription|QualifiedName]
 ;
 
 SelfReferenceRule returns SelfReference:
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/scoping/DataDescriptionLanguageResourceDescriptionStrategy.java b/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/scoping/DataDescriptionLanguageResourceDescriptionStrategy.java
index 3de15defda88e519cb2b0c2d0eaf9bc3f7438692..d80ff7246e6e0fad8a72a98324e2875a2b664de1 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/scoping/DataDescriptionLanguageResourceDescriptionStrategy.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src/de/evoal/languages/model/ddl/dsl/scoping/DataDescriptionLanguageResourceDescriptionStrategy.java
@@ -11,7 +11,9 @@ public class DataDescriptionLanguageResourceDescriptionStrategy extends Filterin
 		super(
 				DdlPackage.eINSTANCE.getDataDescriptionModel(),
 				DdlPackage.eINSTANCE.getDataTypeDefinition(),
-				DdlPackage.eINSTANCE.getDataDescription()
+				DdlPackage.eINSTANCE.getDataDescription(),
+				DdlPackage.eINSTANCE.getTypedDataDescription(),
+				DdlPackage.eINSTANCE.getUntypedDataDescription()
 			 );
 	}
 }
\ No newline at end of file
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/formatting2/.DataDescriptionLanguageFormatter.java._trace b/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/formatting2/.DataDescriptionLanguageFormatter.java._trace
index ebf31cd9ba1af76b5d6694f919919f922998754a..0c75ef4c634f7732ba86338959b9044a64d78918 100644
Binary files a/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/formatting2/.DataDescriptionLanguageFormatter.java._trace and b/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/formatting2/.DataDescriptionLanguageFormatter.java._trace differ
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/generator/.DataDescriptionLanguageGenerator.java._trace b/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/generator/.DataDescriptionLanguageGenerator.java._trace
index 69ebedde49fde9be2b087763508e0975aa58d187..3237804aa6d9fbd609a714770cf017bb79c3d461 100644
Binary files a/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/generator/.DataDescriptionLanguageGenerator.java._trace and b/src/languages/de.evoal.languages.model.ddl.dsl/xtend-gen/de/evoal/languages/model/ddl/dsl/generator/.DataDescriptionLanguageGenerator.java._trace differ
diff --git a/src/languages/de.evoal.languages.model.dl.dsl.tests/src/de/evoal/languages/model/dl/dsl/tests/DefinitionLanguageParsingTest.xtend b/src/languages/de.evoal.languages.model.dl.dsl.tests/src/de/evoal/languages/model/dl/dsl/tests/DefinitionLanguageParsingTest.xtend
index caaef508f3069d13c7623a851ef93efd8be3937c..79cd765cf37f2618c7b9b3c0e322a4dbfaf7e229 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl.tests/src/de/evoal/languages/model/dl/dsl/tests/DefinitionLanguageParsingTest.xtend
+++ b/src/languages/de.evoal.languages.model.dl.dsl.tests/src/de/evoal/languages/model/dl/dsl/tests/DefinitionLanguageParsingTest.xtend
@@ -31,7 +31,7 @@ class DefinitionLanguageParsingTest {
 			}
 		''')
 		
-		assertExportedEObjectDescriptions(model, "foobar.wombat.tele")
+		assertExportedEObjectDescriptions(model, "foobar.wombat, foobar.wombat.tele")
 
 	}
 	
diff --git a/src/languages/de.evoal.languages.model.dl.dsl/xtend-gen/de/evoal/languages/model/dl/dsl/generator/.DefinitionLanguageGenerator.java._trace b/src/languages/de.evoal.languages.model.dl.dsl/xtend-gen/de/evoal/languages/model/dl/dsl/generator/.DefinitionLanguageGenerator.java._trace
index bbb6b3189529b30d11e7cbc83641ba9a0f3debc0..1cef1421a6ccb17c1bb89a409111c9477c0e020b 100644
Binary files a/src/languages/de.evoal.languages.model.dl.dsl/xtend-gen/de/evoal/languages/model/dl/dsl/generator/.DefinitionLanguageGenerator.java._trace and b/src/languages/de.evoal.languages.model.dl.dsl/xtend-gen/de/evoal/languages/model/dl/dsl/generator/.DefinitionLanguageGenerator.java._trace differ
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
index 5c511c33192ab0029529ce39b31d0b0fd2c6efa1..1f1cee005b523243ad79ec56f09ab11935e466a4 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
+++ b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
@@ -7100,9 +7100,9 @@ rule__DataReferenceRule__DefinitionAssignment_2
 	(
 		{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 		(
-			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
-			ruleStringOrId
-			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
+			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
 		)
 		{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 	)
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
index d3af16612fdbd437b834efaa1845677a32ee1937..7d58e34970d1bb36e843b2bf96eda2d020af3f9f 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
@@ -23298,34 +23298,34 @@ public class InternalGeneratorDSLParser extends AbstractInternalContentAssistPar
 
 
     // $ANTLR start "rule__DataReferenceRule__DefinitionAssignment_2"
-    // InternalGeneratorDSL.g:7095:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleStringOrId ) ) ;
+    // InternalGeneratorDSL.g:7095:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__DataReferenceRule__DefinitionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalGeneratorDSL.g:7099:1: ( ( ( ruleStringOrId ) ) )
-            // InternalGeneratorDSL.g:7100:2: ( ( ruleStringOrId ) )
+            // InternalGeneratorDSL.g:7099:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalGeneratorDSL.g:7100:2: ( ( ruleQualifiedName ) )
             {
-            // InternalGeneratorDSL.g:7100:2: ( ( ruleStringOrId ) )
-            // InternalGeneratorDSL.g:7101:3: ( ruleStringOrId )
+            // InternalGeneratorDSL.g:7100:2: ( ( ruleQualifiedName ) )
+            // InternalGeneratorDSL.g:7101:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); 
             }
-            // InternalGeneratorDSL.g:7102:3: ( ruleStringOrId )
-            // InternalGeneratorDSL.g:7103:4: ruleStringOrId
+            // InternalGeneratorDSL.g:7102:3: ( ruleQualifiedName )
+            // InternalGeneratorDSL.g:7103:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
 
             }
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.ddl b/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.ddl
index 0a100d6397a8fdf5ddd81abe08ae60078ff8f7aa..81407ca5e2d61cd480bfc2a6e7af84fc6031fcc0 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.ddl
+++ b/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.ddl
@@ -1,3 +1,5 @@
-data:
-	quotient real data 'x:0';
-	quotient real data 'x:1';
\ No newline at end of file
+module a {
+	data:
+		quotient real data 'x:0';
+		quotient real data 'x:1';
+}
\ No newline at end of file
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.generator b/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.generator
index e6ba8a7e6ae08a3452821b68b1cb80fbc4f237d1..b7176baa142d26a75491a40f3ca814fbd343cbac 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.generator
+++ b/src/languages/de.evoal.languages.model.generator.dsl.tests/src/de/evoal/languages/model/generator/dsl/tests/regressions/attribute-linking.generator
@@ -6,13 +6,4 @@ pipeline 'p' [
 			A.xxx := 1.0;
 		}
 	}
-	/* 
-     step {
-     	component   'B' {
-     		
-     	}
-     	reads [data 'x:0'];
-     	writes [data 'x:1'];
-     }
-     */
 ]
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin
index 30c81b3bdd02bfd6071f330a4fea32f7f1806020..bf51850b5915003b9ae3c0b5690903421b8c7e73 100644
Binary files a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin and b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
index c18ac5897f04ee680be933bdbec892a2d350fb41..02d78a505f9ee53532d0eec8de2b8628d2723d48 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
@@ -1102,7 +1102,7 @@ ruleDataReferenceRule returns [EObject current=null]
 				{
 					newCompositeNode(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0());
 				}
-				ruleStringOrId
+				ruleQualifiedName
 				{
 					afterParserOrEnumRuleCall();
 				}
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
index 4afaa73f11821684c41f5f6d8c546206d8557814..3b36a8b467b05c33f61f1210114e2c4c479e716b 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
@@ -3028,7 +3028,7 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
 
 
     // $ANTLR start "ruleDataReferenceRule"
-    // InternalGeneratorDSL.g:1070:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) ;
+    // InternalGeneratorDSL.g:1070:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) ;
     public final EObject ruleDataReferenceRule() throws RecognitionException {
         EObject current = null;
 
@@ -3038,11 +3038,11 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
         	enterRule();
 
         try {
-            // InternalGeneratorDSL.g:1076:2: ( ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) )
-            // InternalGeneratorDSL.g:1077:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
+            // InternalGeneratorDSL.g:1076:2: ( ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) )
+            // InternalGeneratorDSL.g:1077:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
             {
-            // InternalGeneratorDSL.g:1077:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
-            // InternalGeneratorDSL.g:1078:3: () otherlv_1= 'data' ( ( ruleStringOrId ) )
+            // InternalGeneratorDSL.g:1077:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
+            // InternalGeneratorDSL.g:1078:3: () otherlv_1= 'data' ( ( ruleQualifiedName ) )
             {
             // InternalGeneratorDSL.g:1078:3: ()
             // InternalGeneratorDSL.g:1079:4: 
@@ -3068,11 +3068,11 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
               			newLeafNode(otherlv_1, grammarAccess.getDataReferenceRuleAccess().getDataKeyword_1());
               		
             }
-            // InternalGeneratorDSL.g:1092:3: ( ( ruleStringOrId ) )
-            // InternalGeneratorDSL.g:1093:4: ( ruleStringOrId )
+            // InternalGeneratorDSL.g:1092:3: ( ( ruleQualifiedName ) )
+            // InternalGeneratorDSL.g:1093:4: ( ruleQualifiedName )
             {
-            // InternalGeneratorDSL.g:1093:4: ( ruleStringOrId )
-            // InternalGeneratorDSL.g:1094:5: ruleStringOrId
+            // InternalGeneratorDSL.g:1093:4: ( ruleQualifiedName )
+            // InternalGeneratorDSL.g:1094:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -3092,7 +3092,7 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
               				
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
index f157a338f7a51466e5d3e6b05c8cb2c4b373c5ce..79fe58d036faca814db6a45ba592973044605dc7 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
@@ -871,7 +871,7 @@ public class GeneratorDSLGrammarAccess extends AbstractElementFinder.AbstractGra
 	
 	//DataReferenceRule returns DataReference:
 	//    {DataReference}
-	//    'data' definition = [ddl::DataDescription|StringOrId]
+	//    'data' definition = [ddl::DataDescription|QualifiedName]
 	//;
 	public InstanceLanguageGrammarAccess.DataReferenceRuleElements getDataReferenceRuleAccess() {
 		return gaInstanceLanguage.getDataReferenceRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/GeneratorDSLRuntimeModule.java b/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/GeneratorDSLRuntimeModule.java
index e4968be2bd8efd402f4de8f60941795777a3dbd2..e23bec78ade9b98ed60a878caf7ca5809be32164 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/GeneratorDSLRuntimeModule.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/GeneratorDSLRuntimeModule.java
@@ -4,49 +4,26 @@
 package de.evoal.languages.model.generator.dsl;
 
 import org.eclipse.xtext.conversion.IValueConverterService;
-import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
-import org.eclipse.xtext.naming.IQualifiedNameProvider;
-import org.eclipse.xtext.scoping.IGlobalScopeProvider;
-import org.eclipse.xtext.scoping.IScopeProvider;
 import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
-import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
 
-import com.google.inject.name.Names;
-
-import de.evoal.languages.model.generator.dsl.scoping.GeneratorClasspathGlobalScopeProvider;
-import de.evoal.languages.model.generator.dsl.scoping.GeneratorDSLScopeProvider;
+import de.evoal.languages.model.generator.dsl.scoping.GeneratorDSLLocalScopeProvider;
 import de.evoal.languages.model.utils.converter.ValueConverterService;
 
 /**
  * Use this class to register components to be used at runtime / without the Equinox extension registry.
  */
 public class GeneratorDSLRuntimeModule extends AbstractGeneratorDSLRuntimeModule {
-	/*
 	@Override
-	public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
-		return GeneratorClasspathGlobalScopeProvider.class;
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						com.google.inject.name.Names
+								.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
+				.to(GeneratorDSLLocalScopeProvider.class);
 	}
-		
+	
     @Override
-	public Class<? extends IScopeProvider> bindIScopeProvider() {
-		return GeneratorDSLScopeProvider.class;
-	}
-
-	@Override
     public Class<? extends IValueConverterService> bindIValueConverterService() {
             return ValueConverterService.class;
     }
-
-	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
-		return DefaultDeclarativeQualifiedNameProvider.class;
-	}
-	
-	@Override
-	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
-		binder.bind(IScopeProvider.class)
-				.annotatedWith(
-						Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
-				.to(ImportedNamespaceAwareLocalScopeProvider.class);
-	}
-*/
 }
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/scoping/GeneratorDSLLocalScopeProvider.java b/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/scoping/GeneratorDSLLocalScopeProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d238725d361d59024dc2091162e1004404a5e8ac
--- /dev/null
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src/de/evoal/languages/model/generator/dsl/scoping/GeneratorDSLLocalScopeProvider.java
@@ -0,0 +1,62 @@
+package de.evoal.languages.model.generator.dsl.scoping;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+
+import com.google.inject.Inject;
+
+import de.evoal.languages.model.base.BasePackage;
+import de.evoal.languages.model.instance.InstancePackage;
+import de.evoal.languages.model.instance.dsl.scoping.InstanceLanguageLocalScopeProvider;
+import de.evoal.languages.model.utils.scoping.WildcardEnabledLocalScopeProvider;
+
+public class GeneratorDSLLocalScopeProvider extends WildcardEnabledLocalScopeProvider {
+	private static EReference dataDefinition = InstancePackage.eINSTANCE.getDataReference_Definition();
+	private static EClass dataReference = InstancePackage.eINSTANCE.getDataReference();
+	private static EClass instance = BasePackage.eINSTANCE.getInstance();
+	private static EReference attributeDefinition = BasePackage.eINSTANCE.getAttribute_Definition();
+	
+	@Inject
+	private InstanceLanguageLocalScopeProvider instanceScopes;
+	
+	@Override
+	public IScope getScope(final EObject context, final EReference reference) {
+		try {
+			System.err.println("[Gene Local ] --> " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
+	
+			if(instance.equals(context.eClass()) && (attributeDefinition.equals(reference))) {
+				// inject fields of types
+				IScope typeScope = IScope.NULLSCOPE;
+				try {
+					typeScope = instanceScopes.getScope(context, reference);
+				} catch(final NullPointerException e) {
+					System.err.println(e);
+				}
+				
+				return getLocalElementsScope(typeScope, context, reference);
+			} else/* if(dataReference.equals(context.eClass()) && dataDefinition.equals(reference)) {
+				// inject fields of types
+				IScope typeScope = IScope.NULLSCOPE;
+				try {
+					typeScope = instanceScopes.getScope(context, reference);
+				} catch(final NullPointerException e) {
+					System.err.println(e);
+				}
+				
+				return getLocalElementsScope(typeScope, context, reference);
+			}*/
+		/*else if(context instanceof Problem && instanceDefinition.equals(reference)) {
+			IScope result = super.getScope(context, reference);;
+			 
+			System.err.println(result);
+		}
+*/
+			return super.getScope(context, reference);
+		} finally {
+			System.err.println("[Gene Local ] --< " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());			
+		}
+	}	
+
+}
diff --git a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
index 73d9a489aa99f1466ccee8cb2ac2f8d9973dd499..15f26496638948276335ad937e801ac244b75ab0 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
+++ b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
@@ -4374,9 +4374,9 @@ rule__DataReferenceRule__DefinitionAssignment_2
 	(
 		{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 		(
-			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
-			ruleStringOrId
-			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
+			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
 		)
 		{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 	)
diff --git a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
index 7a2c19931654857e6f4d4f222647decd44972752..c59900e3eb1c25f7da5a5961bec9820b3ddefc9d 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
@@ -14618,34 +14618,34 @@ public class InternalInstanceLanguageParser extends AbstractInternalContentAssis
 
 
     // $ANTLR start "rule__DataReferenceRule__DefinitionAssignment_2"
-    // InternalInstanceLanguage.g:4369:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleStringOrId ) ) ;
+    // InternalInstanceLanguage.g:4369:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__DataReferenceRule__DefinitionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalInstanceLanguage.g:4373:1: ( ( ( ruleStringOrId ) ) )
-            // InternalInstanceLanguage.g:4374:2: ( ( ruleStringOrId ) )
+            // InternalInstanceLanguage.g:4373:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalInstanceLanguage.g:4374:2: ( ( ruleQualifiedName ) )
             {
-            // InternalInstanceLanguage.g:4374:2: ( ( ruleStringOrId ) )
-            // InternalInstanceLanguage.g:4375:3: ( ruleStringOrId )
+            // InternalInstanceLanguage.g:4374:2: ( ( ruleQualifiedName ) )
+            // InternalInstanceLanguage.g:4375:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); 
             }
-            // InternalInstanceLanguage.g:4376:3: ( ruleStringOrId )
-            // InternalInstanceLanguage.g:4377:4: ruleStringOrId
+            // InternalInstanceLanguage.g:4376:3: ( ruleQualifiedName )
+            // InternalInstanceLanguage.g:4377:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
 
             }
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin
index 68c55a6c0b6499dd3282e50fa24bf88c0faa4cf0..494b1bd1558b75f3b91e8a8a0ae8be12d8d39788 100644
Binary files a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin and b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
index 6554a31049cd91794de00029ab3b824934eac681..546d0b71d1d0dee1f22c1f3a6f2e7fcd52d2acfc 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
@@ -153,7 +153,7 @@ ruleDataReferenceRule returns [EObject current=null]
 				{
 					newCompositeNode(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0());
 				}
-				ruleStringOrId
+				ruleQualifiedName
 				{
 					afterParserOrEnumRuleCall();
 				}
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
index 4dc90b6bcf3d67080140c0c8417eacf2ed0d5c01..de1245da50c7a2ba262715135998fe3c45ab2d5a 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
@@ -335,7 +335,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
 
 
     // $ANTLR start "ruleDataReferenceRule"
-    // InternalInstanceLanguage.g:121:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) ;
+    // InternalInstanceLanguage.g:121:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) ;
     public final EObject ruleDataReferenceRule() throws RecognitionException {
         EObject current = null;
 
@@ -345,11 +345,11 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
         	enterRule();
 
         try {
-            // InternalInstanceLanguage.g:127:2: ( ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) )
-            // InternalInstanceLanguage.g:128:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
+            // InternalInstanceLanguage.g:127:2: ( ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) )
+            // InternalInstanceLanguage.g:128:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
             {
-            // InternalInstanceLanguage.g:128:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
-            // InternalInstanceLanguage.g:129:3: () otherlv_1= 'data' ( ( ruleStringOrId ) )
+            // InternalInstanceLanguage.g:128:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
+            // InternalInstanceLanguage.g:129:3: () otherlv_1= 'data' ( ( ruleQualifiedName ) )
             {
             // InternalInstanceLanguage.g:129:3: ()
             // InternalInstanceLanguage.g:130:4: 
@@ -375,11 +375,11 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
               			newLeafNode(otherlv_1, grammarAccess.getDataReferenceRuleAccess().getDataKeyword_1());
               		
             }
-            // InternalInstanceLanguage.g:143:3: ( ( ruleStringOrId ) )
-            // InternalInstanceLanguage.g:144:4: ( ruleStringOrId )
+            // InternalInstanceLanguage.g:143:3: ( ( ruleQualifiedName ) )
+            // InternalInstanceLanguage.g:144:4: ( ruleQualifiedName )
             {
-            // InternalInstanceLanguage.g:144:4: ( ruleStringOrId )
-            // InternalInstanceLanguage.g:145:5: ruleStringOrId
+            // InternalInstanceLanguage.g:144:4: ( ruleQualifiedName )
+            // InternalInstanceLanguage.g:145:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -399,7 +399,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
               				
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/serializer/InstanceLanguageSemanticSequencer.java b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/serializer/InstanceLanguageSemanticSequencer.java
index d178d821daed3415643f1d1d05c88cbce5cecbbc..1cb7d5aa5381e83faacd303ef7b8b7f4d01f5e1c 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/serializer/InstanceLanguageSemanticSequencer.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/serializer/InstanceLanguageSemanticSequencer.java
@@ -196,7 +196,7 @@ public class InstanceLanguageSemanticSequencer extends BaseLanguageSemanticSeque
 	 *     ValueRule returns DataReference
 	 *
 	 * Constraint:
-	 *     definition=[DataDescription|StringOrId]
+	 *     definition=[DataDescription|QualifiedName]
 	 * </pre>
 	 */
 	protected void sequence_DataReferenceRule(ISerializationContext context, DataReference semanticObject) {
@@ -205,7 +205,7 @@ public class InstanceLanguageSemanticSequencer extends BaseLanguageSemanticSeque
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, InstancePackage.Literals.DATA_REFERENCE__DEFINITION));
 		}
 		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1(), semanticObject.eGet(InstancePackage.Literals.DATA_REFERENCE__DEFINITION, false));
+		feeder.accept(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1(), semanticObject.eGet(InstancePackage.Literals.DATA_REFERENCE__DEFINITION, false));
 		feeder.finish();
 	}
 	
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
index 4b0c8ff787ed6509da29ceb72bf8772eed3eb1ca..774b7ccf7f687f9b9f65cbeb52c069898ac6b023 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
@@ -55,16 +55,16 @@ public class InstanceLanguageGrammarAccess extends AbstractElementFinder.Abstrac
 		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cDefinitionAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final CrossReference cDefinitionDataDescriptionCrossReference_2_0 = (CrossReference)cDefinitionAssignment_2.eContents().get(0);
-		private final RuleCall cDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1 = (RuleCall)cDefinitionDataDescriptionCrossReference_2_0.eContents().get(1);
+		private final RuleCall cDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1 = (RuleCall)cDefinitionDataDescriptionCrossReference_2_0.eContents().get(1);
 		
 		//DataReferenceRule returns DataReference:
 		//    {DataReference}
-		//    'data' definition = [ddl::DataDescription|StringOrId]
+		//    'data' definition = [ddl::DataDescription|QualifiedName]
 		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//{DataReference}
-		//'data' definition = [ddl::DataDescription|StringOrId]
+		//'data' definition = [ddl::DataDescription|QualifiedName]
 		public Group getGroup() { return cGroup; }
 		
 		//{DataReference}
@@ -73,14 +73,14 @@ public class InstanceLanguageGrammarAccess extends AbstractElementFinder.Abstrac
 		//'data'
 		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
 		
-		//definition = [ddl::DataDescription|StringOrId]
+		//definition = [ddl::DataDescription|QualifiedName]
 		public Assignment getDefinitionAssignment_2() { return cDefinitionAssignment_2; }
 		
-		//[ddl::DataDescription|StringOrId]
+		//[ddl::DataDescription|QualifiedName]
 		public CrossReference getDefinitionDataDescriptionCrossReference_2_0() { return cDefinitionDataDescriptionCrossReference_2_0; }
 		
-		//StringOrId
-		public RuleCall getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1() { return cDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1; }
+		//QualifiedName
+		public RuleCall getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1() { return cDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1; }
 	}
 	
 	
@@ -149,7 +149,7 @@ public class InstanceLanguageGrammarAccess extends AbstractElementFinder.Abstrac
 	
 	//DataReferenceRule returns DataReference:
 	//    {DataReference}
-	//    'data' definition = [ddl::DataDescription|StringOrId]
+	//    'data' definition = [ddl::DataDescription|QualifiedName]
 	//;
 	public DataReferenceRuleElements getDataReferenceRuleAccess() {
 		return pDataReferenceRule;
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtext b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtext
index e6be2058595351cb37e452c32a3e0c80ad1d6c3f..b15f5ce1ae75fb4db10a5abd68f17576816f09f8 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtext
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtext
@@ -14,5 +14,5 @@ ReferenceRule returns base::ValueReference:
 
 DataReferenceRule returns DataReference:
 	{DataReference}
-	'data' definition = [ddl::DataDescription|StringOrId]
+	'data' definition = [ddl::DataDescription|QualifiedName]
 ;
\ No newline at end of file
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageLocalScopeProvider.java b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageLocalScopeProvider.java
index b16fcd928c12f18388aa7910d7e4f32b524efe74..3a42ffda2977ba96b08754ccfd3b611dcc186db9 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageLocalScopeProvider.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageLocalScopeProvider.java
@@ -23,24 +23,26 @@ public class InstanceLanguageLocalScopeProvider extends WildcardEnabledLocalScop
 	
 	private final static EClass instance = BasePackage.eINSTANCE.getInstance();
 	private final static EReference attributeDefinition = BasePackage.eINSTANCE.getAttribute_Definition();
+	private static EReference dataDefinition = InstancePackage.eINSTANCE.getDataReference_Definition();
+	private static EClass dataReference = InstancePackage.eINSTANCE.getDataReference();
 
 	@Inject
 	private BaseLanguageLocalScopeProvider provider;
 
 	@Override
 	public IScope getScope(EObject context, EReference reference) {
-
-
 		try {
-			//System.err.println("[Inst Global] --> " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
+			System.err.println("[Inst Local] --> " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
 			
 			if(instance.equals(context.eClass()) && attributeDefinition.equals(reference)) {
 				return provider.getScope(context, reference);
+			} else if(dataReference.equals(context.eClass()) && dataDefinition.equals(reference)) {
+				return getResourceScope(IScope.NULLSCOPE, context, reference);
 			}
-	
+
 			return super.getScope(context, reference);
 		} finally {
-			//System.err.println("[Inst Global] --< " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
+			System.err.println("[Inst Local] --< " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
 
 		}
 	}
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageScopeProvider.java b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageScopeProvider.java
index 9b43fc828fac7e9c433b9e7f334cbea6e34e845d..7dcf684c90e8091be94dfc9be8f7119d8a2a997f 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageScopeProvider.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src/de/evoal/languages/model/instance/dsl/scoping/InstanceLanguageScopeProvider.java
@@ -16,6 +16,7 @@ import org.eclipse.xtext.scoping.Scopes;
 import de.evoal.languages.model.base.BasePackage;
 import de.evoal.languages.model.base.Instance;
 import de.evoal.languages.model.base.TypeDefinition;
+import de.evoal.languages.model.instance.InstancePackage;
 
 /**
  * This class contains custom scoping description.
@@ -45,7 +46,8 @@ public class InstanceLanguageScopeProvider extends AbstractInstanceLanguageScope
 		}
 */
 		try {
-		return super.getScope(context, reference);
+			
+			return super.getScope(context, reference);
 		} finally {
 			System.err.println("[Inst Local ] --< " + context.eClass().getName() + " --> " + reference.getEContainingClass().getName() + "." + reference.getName());
 
diff --git a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
index 4866335c3c7efd3732a69d83570b250ebd114ebb..b05187961d58640befdfa5dc7eba45ed401d469e 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
+++ b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
@@ -7204,9 +7204,9 @@ rule__DataReferenceRule__DefinitionAssignment_2
 	(
 		{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 		(
-			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
-			ruleStringOrId
-			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
+			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
 		)
 		{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 	)
diff --git a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
index 818e167f32b4209bb8afb9f10f1612acca63f341..af08e7e019ccafeebb68aa027cd3ab15170c8b12 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
@@ -23729,34 +23729,34 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__DataReferenceRule__DefinitionAssignment_2"
-    // InternalMachineLearningLanguage.g:7199:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleStringOrId ) ) ;
+    // InternalMachineLearningLanguage.g:7199:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__DataReferenceRule__DefinitionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMachineLearningLanguage.g:7203:1: ( ( ( ruleStringOrId ) ) )
-            // InternalMachineLearningLanguage.g:7204:2: ( ( ruleStringOrId ) )
+            // InternalMachineLearningLanguage.g:7203:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalMachineLearningLanguage.g:7204:2: ( ( ruleQualifiedName ) )
             {
-            // InternalMachineLearningLanguage.g:7204:2: ( ( ruleStringOrId ) )
-            // InternalMachineLearningLanguage.g:7205:3: ( ruleStringOrId )
+            // InternalMachineLearningLanguage.g:7204:2: ( ( ruleQualifiedName ) )
+            // InternalMachineLearningLanguage.g:7205:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); 
             }
-            // InternalMachineLearningLanguage.g:7206:3: ( ruleStringOrId )
-            // InternalMachineLearningLanguage.g:7207:4: ruleStringOrId
+            // InternalMachineLearningLanguage.g:7206:3: ( ruleQualifiedName )
+            // InternalMachineLearningLanguage.g:7207:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
 
             }
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin
index a5f35a2f852e950f4642bf6e7a33ab95d63f17d3..2c7ad6913b20db6b68b8474a5871f0aeff1e43bb 100644
Binary files a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin and b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
index b24f14b4ac9de126b7bd3bf69998bf6a6998444f..79898360dec9f6366d2cfdf46e962e478ad3b079 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
@@ -1159,7 +1159,7 @@ ruleDataReferenceRule returns [EObject current=null]
 				{
 					newCompositeNode(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0());
 				}
-				ruleStringOrId
+				ruleQualifiedName
 				{
 					afterParserOrEnumRuleCall();
 				}
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
index d4957e71e7fb3dc939de77436951b79fc38e0424..4ae0a74a7d58fe1a26735f35e1e6ba879bf66b2a 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
@@ -3179,7 +3179,7 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleDataReferenceRule"
-    // InternalMachineLearningLanguage.g:1127:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) ;
+    // InternalMachineLearningLanguage.g:1127:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) ;
     public final EObject ruleDataReferenceRule() throws RecognitionException {
         EObject current = null;
 
@@ -3189,11 +3189,11 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalMachineLearningLanguage.g:1133:2: ( ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) )
-            // InternalMachineLearningLanguage.g:1134:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
+            // InternalMachineLearningLanguage.g:1133:2: ( ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) )
+            // InternalMachineLearningLanguage.g:1134:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
             {
-            // InternalMachineLearningLanguage.g:1134:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
-            // InternalMachineLearningLanguage.g:1135:3: () otherlv_1= 'data' ( ( ruleStringOrId ) )
+            // InternalMachineLearningLanguage.g:1134:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
+            // InternalMachineLearningLanguage.g:1135:3: () otherlv_1= 'data' ( ( ruleQualifiedName ) )
             {
             // InternalMachineLearningLanguage.g:1135:3: ()
             // InternalMachineLearningLanguage.g:1136:4: 
@@ -3219,11 +3219,11 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
               			newLeafNode(otherlv_1, grammarAccess.getDataReferenceRuleAccess().getDataKeyword_1());
               		
             }
-            // InternalMachineLearningLanguage.g:1149:3: ( ( ruleStringOrId ) )
-            // InternalMachineLearningLanguage.g:1150:4: ( ruleStringOrId )
+            // InternalMachineLearningLanguage.g:1149:3: ( ( ruleQualifiedName ) )
+            // InternalMachineLearningLanguage.g:1150:4: ( ruleQualifiedName )
             {
-            // InternalMachineLearningLanguage.g:1150:4: ( ruleStringOrId )
-            // InternalMachineLearningLanguage.g:1151:5: ruleStringOrId
+            // InternalMachineLearningLanguage.g:1150:4: ( ruleQualifiedName )
+            // InternalMachineLearningLanguage.g:1151:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -3243,7 +3243,7 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
               				
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
index 95057d13f16ac5682c08eddf9c6b009c27707035..0e5650a23274c9901520a529797b9a5088bd3eb9 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
@@ -997,7 +997,7 @@ public class MachineLearningLanguageGrammarAccess extends AbstractElementFinder.
 	
 	//DataReferenceRule returns DataReference:
 	//    {DataReference}
-	//    'data' definition = [ddl::DataDescription|StringOrId]
+	//    'data' definition = [ddl::DataDescription|QualifiedName]
 	//;
 	public InstanceLanguageGrammarAccess.DataReferenceRuleElements getDataReferenceRuleAccess() {
 		return gaInstanceLanguage.getDataReferenceRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguage.g b/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguage.g
index 5d29d2f4cca50cc59e42f121e26fb02cf5a71fbb..c423e01f38d1eda2eaf6c3298bb6046bbc33bb7a 100644
--- a/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguage.g
+++ b/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguage.g
@@ -5261,9 +5261,9 @@ rule__DataReferenceRule__DefinitionAssignment_2
 	(
 		{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 		(
-			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
-			ruleStringOrId
-			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); }
+			{ before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); }
 		)
 		{ after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); }
 	)
diff --git a/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguageParser.java b/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguageParser.java
index 1f2f5b21d6c3ce7013b6c7e3e59fe7d84d0c20db..158f7bc5f68953a989fbc4dbe7d10ba72ee3ea91 100644
--- a/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ol.dsl.ide/src-gen/de/evoal/languages/model/ol/dsl/ide/contentassist/antlr/internal/InternalOptimisationLanguageParser.java
@@ -17419,34 +17419,34 @@ public class InternalOptimisationLanguageParser extends AbstractInternalContentA
 
 
     // $ANTLR start "rule__DataReferenceRule__DefinitionAssignment_2"
-    // InternalOptimisationLanguage.g:5256:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleStringOrId ) ) ;
+    // InternalOptimisationLanguage.g:5256:1: rule__DataReferenceRule__DefinitionAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__DataReferenceRule__DefinitionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalOptimisationLanguage.g:5260:1: ( ( ( ruleStringOrId ) ) )
-            // InternalOptimisationLanguage.g:5261:2: ( ( ruleStringOrId ) )
+            // InternalOptimisationLanguage.g:5260:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalOptimisationLanguage.g:5261:2: ( ( ruleQualifiedName ) )
             {
-            // InternalOptimisationLanguage.g:5261:2: ( ( ruleStringOrId ) )
-            // InternalOptimisationLanguage.g:5262:3: ( ruleStringOrId )
+            // InternalOptimisationLanguage.g:5261:2: ( ( ruleQualifiedName ) )
+            // InternalOptimisationLanguage.g:5262:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0()); 
             }
-            // InternalOptimisationLanguage.g:5263:3: ( ruleStringOrId )
-            // InternalOptimisationLanguage.g:5264:4: ruleStringOrId
+            // InternalOptimisationLanguage.g:5263:3: ( ruleQualifiedName )
+            // InternalOptimisationLanguage.g:5264:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               before(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionStringOrIdParserRuleCall_2_0_1()); 
+               after(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionQualifiedNameParserRuleCall_2_0_1()); 
             }
 
             }
diff --git a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/OptimisationLanguage.xtextbin b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/OptimisationLanguage.xtextbin
index 7b6851bb94b1de75dd1e70b89a11016aa1198a43..cbee6de6f1bc366b938b554f072061471215d762 100644
Binary files a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/OptimisationLanguage.xtextbin and b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/OptimisationLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguage.g b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguage.g
index ebfb2b176771dcb7a4befc06ce45168d3a02a1a6..bf5f02f6fc31e69a495ec448080caa28b86a753f 100644
--- a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguage.g
+++ b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguage.g
@@ -456,7 +456,7 @@ ruleDataReferenceRule returns [EObject current=null]
 				{
 					newCompositeNode(grammarAccess.getDataReferenceRuleAccess().getDefinitionDataDescriptionCrossReference_2_0());
 				}
-				ruleStringOrId
+				ruleQualifiedName
 				{
 					afterParserOrEnumRuleCall();
 				}
diff --git a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguageParser.java b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguageParser.java
index 35e210954b3011441e6a0d750f083a5a481a9de1..fac3f7d533d53250243a683bbe1519b91cdaa0e5 100644
--- a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/parser/antlr/internal/InternalOptimisationLanguageParser.java
@@ -1161,7 +1161,7 @@ public class InternalOptimisationLanguageParser extends AbstractInternalAntlrPar
 
 
     // $ANTLR start "ruleDataReferenceRule"
-    // InternalOptimisationLanguage.g:424:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) ;
+    // InternalOptimisationLanguage.g:424:1: ruleDataReferenceRule returns [EObject current=null] : ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) ;
     public final EObject ruleDataReferenceRule() throws RecognitionException {
         EObject current = null;
 
@@ -1171,11 +1171,11 @@ public class InternalOptimisationLanguageParser extends AbstractInternalAntlrPar
         	enterRule();
 
         try {
-            // InternalOptimisationLanguage.g:430:2: ( ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) ) )
-            // InternalOptimisationLanguage.g:431:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
+            // InternalOptimisationLanguage.g:430:2: ( ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) ) )
+            // InternalOptimisationLanguage.g:431:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
             {
-            // InternalOptimisationLanguage.g:431:2: ( () otherlv_1= 'data' ( ( ruleStringOrId ) ) )
-            // InternalOptimisationLanguage.g:432:3: () otherlv_1= 'data' ( ( ruleStringOrId ) )
+            // InternalOptimisationLanguage.g:431:2: ( () otherlv_1= 'data' ( ( ruleQualifiedName ) ) )
+            // InternalOptimisationLanguage.g:432:3: () otherlv_1= 'data' ( ( ruleQualifiedName ) )
             {
             // InternalOptimisationLanguage.g:432:3: ()
             // InternalOptimisationLanguage.g:433:4: 
@@ -1201,11 +1201,11 @@ public class InternalOptimisationLanguageParser extends AbstractInternalAntlrPar
               			newLeafNode(otherlv_1, grammarAccess.getDataReferenceRuleAccess().getDataKeyword_1());
               		
             }
-            // InternalOptimisationLanguage.g:446:3: ( ( ruleStringOrId ) )
-            // InternalOptimisationLanguage.g:447:4: ( ruleStringOrId )
+            // InternalOptimisationLanguage.g:446:3: ( ( ruleQualifiedName ) )
+            // InternalOptimisationLanguage.g:447:4: ( ruleQualifiedName )
             {
-            // InternalOptimisationLanguage.g:447:4: ( ruleStringOrId )
-            // InternalOptimisationLanguage.g:448:5: ruleStringOrId
+            // InternalOptimisationLanguage.g:447:4: ( ruleQualifiedName )
+            // InternalOptimisationLanguage.g:448:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -1225,7 +1225,7 @@ public class InternalOptimisationLanguageParser extends AbstractInternalAntlrPar
               				
             }
             pushFollow(FOLLOW_2);
-            ruleStringOrId();
+            ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
diff --git a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/services/OptimisationLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/services/OptimisationLanguageGrammarAccess.java
index 8d47afaf859da2ee304bc9219070def7e170fd1b..111d1f2939209d022a0fb9665359fab3b9747cbc 100644
--- a/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/services/OptimisationLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.ol.dsl/src-gen/de/evoal/languages/model/ol/dsl/services/OptimisationLanguageGrammarAccess.java
@@ -352,7 +352,7 @@ public class OptimisationLanguageGrammarAccess extends AbstractElementFinder.Abs
 	
 	//DataReferenceRule returns DataReference:
 	//    {DataReference}
-	//    'data' definition = [ddl::DataDescription|StringOrId]
+	//    'data' definition = [ddl::DataDescription|QualifiedName]
 	//;
 	public InstanceLanguageGrammarAccess.DataReferenceRuleElements getDataReferenceRuleAccess() {
 		return gaInstanceLanguage.getDataReferenceRuleAccess();