diff --git a/lib/cql.rb b/lib/cql.rb
index <HASH>..<HASH> 100644
--- a/lib/cql.rb
+++ b/lib/cql.rb
@@ -70,7 +70,7 @@ module CQL
         when :self
           val = element
         else
-          # todo - error message?
+          raise(ArgumentError, ":#{attribute} is not a valid attribute for selection.")
       end
 
       val
diff --git a/spec/dsl_spec.rb b/spec/dsl_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/dsl_spec.rb
+++ b/spec/dsl_spec.rb
@@ -31,6 +31,19 @@ describe 'dsl' do
 
   describe "select" do
 
+
+    it 'complains if an unknown special attribute is queried' do
+      gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
+
+      expect {
+        gs.query do
+          select :foo
+          from scenarios
+        end
+      }.to raise_error(ArgumentError, ":foo is not a valid attribute for selection.")
+    end
+
+
     describe "multiple selections" do
 
       it 'can freely mix empty selections and attribute selections' do
More bad input feedback.

Added an error message for when an unknown special identifier is used
in the 'select' clause.