Model-driven Generation of Semantic Web Applications