:foo is a keyword that is not fully qualified. It does not have a namespace associated with it.
(name :foo) ; => "foo" (namespace :foo) ; => nil
:bar/foo is the keyword matching the keyword. Namespace bar and keyword name foo
(name :bar/foo) ; => "foo" (namespace :bar/foo) ; => "bar"
::foo will associate the current namespace with the keyword, making it fully qualified. Assuming the current namespace is a "user":
*ns* ; => #namespace[user] (name ::foo) ; => "foo" (namespace ::foo) ; => "user" ::foo ; => :user/foo
::bar/foo will try to expand any aliases to make it fully accessible:
(create-ns 'my.namespace) ; => #namespace[my.namespace] (alias 'bar 'my.namespace) ; => nil (name ::bar/foo) ; => "foo" (namespace ::bar/foo) ; => "my.namespace" ::bar/foo ; => :my.namespace/foo
source share