/*
* Copyright © 2012-2013 The University of Texas at Dallas
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.utdallas.cs.stormrider.examples.twitter;
import edu.utdallas.cs.stormrider.examples.twitter.add.TwitterLoaderTopology;
import edu.utdallas.cs.stormrider.topology.Topology;
import edu.utdallas.cs.stormrider.topology.TopologyFactory;
import edu.utdallas.cs.stormrider.util.TwitterConstants;
public class TwitterTopologies
{
public static void main( String[] args )
{
//Create a topology object
Topology topology = TopologyFactory.getStormTopology() ;
//Create and Submit Add Topology
topology.submitAddTopology( TwitterConstants.STORAGE_TOPOLOGY_NAME, false, TwitterConstants.NUM_OF_WORKERS,
TwitterLoaderTopology.constructAddTopology() ) ;
//Submit various queries to the query topology
//A simple query that tracks users in a particular location
String queryString =
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" SELECT ?x " +
" WHERE { ?x twitter:Location \"Richardson, TX\" } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-simple1-location" ) ;
//A query that tracks the neighborhood of a user
queryString =
" PREFIX ex: <http://www.example.org/people#> " +
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" SELECT ?x " +
" WHERE { <ex:u-15000001> gleen:onPath(\"([twitter:Has_Friend]/[twitter:Has_Friend])\" ?x) } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-complex1-neighborhood" ) ;
//A user that queries an older version of the graph
queryString =
" PREFIX ex: <http://www.example.org/people#> " +
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " +
" SELECT ?z " +
" WHERE " +
" { " +
" ?x twitter:Timestamp ?y . " +
" ?x rdf:subject <ex:u-15000001> . " +
" ?x rdf:predicate <twitter:Has_Friend> . " +
" ?x rdf:object ?z . " +
" FILTER( ?y <= \"2012-06-05T21:00:00\"^^xsd:dateTime ) " +
" } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-complex2-versioning" ) ;
//Queries that monitor various keywords
queryString =
" PREFIX ex: <http://www.example.org/people#> " +
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" SELECT ?x ?y " +
" WHERE " +
" { " +
" ?x tw:Has_Tweet ?y " +
" ?y tw:Tweet_Text ?z " +
" FILTER regex(?z, \"bombing\", \"i\") " +
" } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-complex3-monitoring1" ) ;
queryString =
" PREFIX ex: <http://www.example.org/people#> " +
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" SELECT ?x ?y " +
" WHERE " +
" { " +
" ?x tw:Has_Tweet ?y " +
" ?y tw:Tweet_Text ?z " +
" FILTER regex(?z, \".*(bombing|explosion).*america.*\", \"i\") " +
" } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-complex3-monitoring2" ) ;
queryString =
" PREFIX ex: <http://www.example.org/people#> " +
" PREFIX twitter: <http://cs.utdallas.edu/semanticweb/StormRider/vocabs/twitter/0.1#> " +
" SELECT ?x ?y " +
" WHERE " +
" { " +
" ?x tw:Has_Tweet ?y " +
" ?y tw:Tweet_Text ?z " +
" ?y tw:Tweet_Place \"Richardson,TX\"^^xsd:string " +
" FILTER regex(?z, \".*(bombing|explosion).*america.*\", \"i\") " +
" } " ;
topology.submitQuery( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.MAX_REPORTS, TwitterConstants.INTERVAL, queryString, true,
TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.IRI, TwitterConstants.HBASE_CONFIG_FILE,
"query-complex3-monitoring3" ) ;
//Start the analyze topology
topology.submitAnalyzeTopology( TwitterConstants.IS_LOCAL_MODE, TwitterConstants.NUM_OF_WORKERS,
TwitterConstants.INTERVAL, true, TwitterConstants.HBASE_MODEL_CONFIG_FILE, TwitterConstants.HBASE_VIEW_CONFIG_FILE ) ;
}
}