XSaiga (empty) → 1.0.0.0
raw patch · 8 files changed
+6494/−0 lines, 8 filesdep +basedep +cgidep +containerssetup-changed
Dependencies added: base, cgi, containers, hsparql, pretty, rdf4h, text
Files
- AGParser2.hs +710/−0
- Getts.hs +148/−0
- LICENSE +30/−0
- Main.hs +126/−0
- Setup.hs +2/−0
- SolarmanTriplestore.hs +5245/−0
- TypeAg2.hs +192/−0
- XSaiga.cabal +41/−0
+ AGParser2.hs view
@@ -0,0 +1,710 @@+module AGParser2 where +import Text.PrettyPrint.HughesPJ as PPH hiding (empty) -- ((PPH.<+>), vcat, text, render,($$),nest,Doc) +import Data.List +import TypeAg2 +import Control.Monad + + + + +---- ************************************ ----------------------- + +type Instance = IRec + +data SorI = S | I |NILL deriving (Eq,Ord,Show, Enum) + -- Synthesized or inherited or NILL + + +type IRec = (SorI, Id) + -- uniquely determines synthesized or inherited attribute for an NT + +data Useless = OF|ISEQUALTO deriving (Show, Eq) + -- for decorating the semantic rules + + + +data SRule_ = NT {iden :: Id, par :: NTType} | Rule {par' :: SeqType} | DRule {par'' :: SRule_ } + +type NTType = Id -> InsAttVals -> M Foo +type SeqType = Id -> InsAttVals -> [SemRule] -> Result -> M Foo +type AltType = NTType +type SemRule = (Instance,(InsAttVals, Id) -> InsAttVals) +------------ +data Tree a = Leaf (a,Instance) + | Branch [Tree a] + | SubNode ((NodeName, Instance), (Start1,End)) + deriving (Eq) + + +type NodeName = MemoL +type Start1 = (Int, InsAttVals) +type Start = ((Int,InsAttVals), [String]) +type End = (Int, InsAttVals) +type Atts = [AttValue] -- [(AttType, AttValue)] +type InsAttVals = [(Instance, Atts)] + + +type Mtable = [(MemoL + ,[(Start1,(Context,Result))] + ) + ] +type Result = [((Start1, End),[Tree MemoL])] + +type State = Mtable +type Context = ([MemoL],[(Int,[(MemoL, Int)])]) + +type M a = Start -> Context -> StateM a +type Seq a = Id -> InsAttVals -> [SemRule] -> Result -> Start -> Context -> StateM a +type Foo = (Context, Result) + +-- ============================ +newtype StateM t = State { unState :: State -> (t,State) } + +instance Monad StateM where + -- defines state propagation + State m >>= k + = State (\s -> let (a,y) = m s in unState (k a) y) + return k = State (\s -> (k,s)) + + + -- extracts the state from the monad +get :: StateM State +get = State (\s -> (s,s)) +put :: State -> StateM () +put s = State (\_ -> ((),s)) +modify :: (State -> State) -> StateM () +modify sf = State (\s -> ((), sf s)) + +-- ============================= + +--------------- ******************************************** --------------------------- + +(<|>) :: AltType -> AltType -> AltType +(p <|> q) idx inhx ((i,a),inp) c + = do (l1,m) <- p idx inhx ((i,[]),inp) c + (l2,n) <- q idx inhx ((i,[]),inp) c + return ((union (fst l1) (fst l2),[]) ,(m ++ n)) + +-------------------------------------------------------- +(*>) :: SeqType -> SeqType -> SeqType +(p *> q) idx inhx semx resx + ((i,a),inp) cc + = do (l,m) <- p idx inhx semx resx + ((i,[]),inp) cc + let passCtxt e + = if e == i then cc + else empty_cuts + mergeCuts e prev new + = if e == i + then (union prev new) + else prev + + apply_to_all q [] l cc + = return ((fst l,[]),[]) + + apply_to_all q (r:rs) l cc + = do (l1,m) <- q `add_P` (r,cc) + (l2,n) <- apply_to_all q rs l cc + return ((union (fst l1) (fst l2),[]),( m ++ n)) + + q `add_P` (rp,cc) + = do let e = pickEnd rp + (l1,m) <- (q idx inhx semx resx (e,inp) (passCtxt (fst e))) + return ((mergeCuts (fst e) (fst l) (fst l1),[]),(addP m rp)) + + (apply_to_all q m l cc) -- CHANGE cc HERE + +pickEnd (((s,iA),(e,a)),t) = (e,[]) + +addP [] ((s1,e1),t1) = [] +addP ((((s2,inA2),(e2,synA2)),t2):restQ) (((s1,inA1),(e1,synA1)),t1) + = (((s1,[]),(e2,[])), a_P_Q_branch) : addP restQ (((s1,inA1),(e1,synA1)),t1) + + where + a_P_Q_branch = addToBranch (((s2,inA2),(e2,synA2)),t2) (((s1,inA1),(e1,synA1)),t1) + +-------- ************* --------------- +addToBranch (q1,((SubNode (name2,q)):ts2)) + (p1,((SubNode (name1,p)):ts1)) + = [Branch [(SubNode (name1,p)),(SubNode (name2,q))]] + +addToBranch (q1,((Branch t2):ts2)) + (p1,((Branch t1):ts1)) + = [Branch (t1++t2)] + +addToBranch (q1,((Branch t2):ts)) + (p1,((SubNode (name1,p)):ts1)) + = [Branch ((SubNode (name1,p)):t2)] + +addToBranch (q1,((SubNode (name2,q)):ts2)) + (p1,((Branch t1):ts)) + = [Branch (t1++[(SubNode (name2,q))])] + + +addToBranch (q1,((SubNode (name2,q)):ts2)) + (p1,[Leaf (x,i)]) + = [Branch [(SubNode ((x,i) ,p1)),(SubNode (name2,q))]] +addToBranch (q1,[Leaf (x,i)]) + (p1,((SubNode (name1,p)):ts1)) + = [Branch [(SubNode (name1,p)),(SubNode ((x,i),q1))]] +addToBranch (q1,((Branch t2):ts)) + (p1,[Leaf (x,i)]) + = [Branch ((SubNode ((x,i),p1)):t2)] +addToBranch (q1,[Leaf (x,i)]) + (p1,((Branch t1):ts)) + = [Branch (t1++[(SubNode ((x,i),q1))])] +addToBranch (q1,[Leaf (x2,i2)]) + (p1,[Leaf (x1,i1)]) = [Branch [(SubNode ((x1,i1),p1)),(SubNode ((x2,i2),q1))]] + +-------- ************* --------------- + + +empty_cuts = ([],[]) +empty :: [(Instance, Atts)] -> M Foo +empty atts (x,inp) l = return (empty_cuts,[((x,(fst x,atts)), [Leaf (Emp, (NILL,O0))])]) + +term :: String -> Instance -> [(Instance, Atts)] -> [(Instance, Atts)] -> M Foo +term c id atts iatts ((r,a),dInp) l + |r - 1 == length dInp = return (empty_cuts,[]) + |dInp!!(r - 1) == c = return (empty_cuts,[(((r,[]),(r+1,atts)),[Leaf (ALeaf c, id)])]) + |otherwise = return (empty_cuts,[]) + + +memoize name f id downAtts ((inp,dAtts),dInput) context + = do s <- get + + case (lookupT name inp (snd context) s) of + Just lRes -> do let lookUpRes = addNode name (S, id) (inp,downAtts) (snd1 lRes) + return (fst1 lRes,lookUpRes) + Nothing + | funccount (snd context) inp name > (length dInput) - inp + 1 + -> return (([name],[]),[]) + + | otherwise -> do let iC = ([],(incContext (snd context) name inp)) + (l,newRes) <- f id downAtts ((inp,dAtts),dInput) iC + -- let ((l,newRes),s1) = unState (f id downAtts (inp,dAtts) iC) s + + let l1 = makeContext (fst l) (findContext (snd context) inp) + s1 <- get + let udtTab = udt (l1,newRes) s1 name (inp,downAtts) + let newFoundRes = addNode name (S, id) (inp,downAtts) newRes + put udtTab + return ( l1 ,newFoundRes) + + + + +findContext [] inp = [] +findContext ((st,rest):sr) inp| st == inp = [(st,rest)] + | otherwise = findContext sr inp + + + + +funccount [] inp name = 0 +funccount ((key,funcp):rest) inp name | key == inp = findf funcp + | otherwise = funccount rest inp name + + where + findf [] = 0 + findf ((tk,fc):rx) | tk == name = fc + | otherwise = findf rx + + +fst1 [(a,b)] = a +snd1 [(a,b)] = b + +makeContext [] [(st,((n,c):ncs))] = ([],[]) +makeContext (r:rs) [] = ((r:rs),[]) +makeContext [] [] = ([],[]) +makeContext (r:rs) [(st,((n,c):ncs))] = ((r:rs), [(st,makeContext_ (r:rs) ((n,c):ncs))]) + +makeContext_ [] ((n,c):ncs) = [] +makeContext_ (r:rs) ((n,c):ncs) = makeContext__ r ((n,c):ncs) ++ makeContext_ rs ((n,c):ncs) + +makeContext__ r [] = [] +makeContext__ r ((n,c):ncs) | r == n = (n,c): makeContext__ r ncs + | otherwise = makeContext__ r ncs + + +incContext [] name inp = [(inp,[(name,1)])] +incContext ((st,((n,c):nc)):sn) name inp + | st == inp = ((st, (addNT ((n,c):nc)) name inp ) :sn) + | otherwise = ((st,((n,c):nc)): incContext sn name inp ) + + +addNT [] name inp = [(name,1)] +addNT ((n,c):nc) name inp | n == name = ((n,(c + 1)):nc) + | otherwise = ((n,c):addNT nc name inp) + + +addNode name id (s',dA) [] + = [] +addNode name id (s',dA) oldRes -- ((((s,newIh),(e,atts)),t):rs) + = let res = packAmb oldRes + newSh x = [ ((sOri, snd id),attVal)| ((sOri, idOld),attVal)<- x] + in [(((s,newIh),(e, newSh atts)),[SubNode ((name, id),((s,nub dA),(e, newSh atts)))]) + | (((s,newIh),(e,atts)),t) <- oldRes] +mapName i [] = [] +mapName i ((i',r):rest) = (i,r): mapName i rest + + +packAmb [] = [] +packAmb [((s1,e1),t1)] = [((s1,e1),t1)] +packAmb [((s1,e1),t1),((s2,e2),t2)] | isEq (s1,e1) (s2,e2) = [((s2,(fst e2, groupAtts (snd e1 ++ snd e2))), t1++t2)] + | otherwise = [((s1,e1),t1),((s2,e2),t2)] + +packAmb (((s1,e1),t1):((s2,e2),t2):xs) | isEq (s1,e1) (s2,e2) = packAmb (((s2,(fst e2, groupAtts (snd e1 ++ snd e2))), t1++t2):xs) + | otherwise = ((s1,e1),t1):packAmb (((s2,e2),t2):xs) + +isEq ((s1,b1),(e1,y1)) ((s2,b2),(e2,y2)) + | s1 == s2 && e1 == e2 = True + | otherwise = False + + +lookupT name inp context mTable + | lookupT1 name inp context mTable == [] = Nothing + | otherwise = Just (lookupT1 name inp context mTable) + + +lookupT1 name inp context mTable | res_in_table == [] = [] + | otherwise = checkUsability inp context (lookupRes (res_in_table !! 0) inp) + + where + res_in_table = [pairs|(n,pairs) <- mTable,n == name] + + +lookupRes [] inp = [] +lookupRes (((i,dA),res):rs) inp | i == inp = [res] + | otherwise = lookupRes rs inp + + +checkUsability inp context [] = [] +checkUsability inp context [((re,sc),res)] | re == [] = [((re,sc),res)] + | otherwise = checkUsability_ (findInp inp context) (findInp inp sc) [((re,sc),res)] + + +findInp inp [] = [] +findInp inp ((s,c):sc) | s == inp = c + | otherwise = findInp inp sc + + +checkUsability_ [] [] [(sc,res)] = [(sc,res)] +checkUsability_ ((n,cs):ccs) [] [(sc,res)] = [(sc,res)] -- if lc at j is empty then re-use +checkUsability_ [] ((n1,cs1):scs) [(sc,res)] = [] -- if cc at j is empty then don't re-use +checkUsability_ ((n,cs):ccs) ((n1,cs1):scs) [(sc,res)] + | and $ condCheck ((n,cs):ccs) ((n1,cs1):scs) = [(sc,res)] + | otherwise = [] + + + +condCheck ((n,cs):ccs) [(n1,cs1)] = [condCheck_ ((n,cs):ccs) (n1,cs1)] +condCheck ((n,cs):ccs) ((n1,cs1):scs) = condCheck_ ((n,cs):ccs) (n1,cs1) : condCheck ((n,cs):ccs) scs + +condCheck_ [] (n1,cs1) = False +condCheck_ ((n,cs):ccs) (n1,cs1) + | n1 == n && cs >= cs1 = True + | n1 == n && cs < cs1 = False + | otherwise = condCheck_ ccs (n1,cs1) + + + +udt :: (Context, Result) -> State -> MemoL -> Start1 -> State +udt res mTable name (inp,dAtts) + = update mTable name (inp,dAtts) res + +update [] name (inp,dAtts) res = [(name,[((inp,dAtts), res)])] +update ((key, pairs):rest) name (inp,dAtts) res + | key == name = (key,my_merge (inp,dAtts) res pairs):rest + | otherwise = ((key, pairs): update rest name (inp,dAtts) res ) + + +my_merge (inp,dAtts) res [] = [((inp,nub dAtts), res)] +my_merge (inp,dAtts) res (((i,dA), es):rest) + |inp == i = ((inp,nub dAtts{-nub (dA ++ dAtts)-}), res):rest + |otherwise = ((i,dA), es): my_merge (inp,dAtts) res rest + + +pickResult ((c,r),t) = r + + +--------------- ************************* semantics of ATTRIBUTE GRAMMAR ************************* -------------------------- + +terminal syn semRules id inhAtts ((i,a),inp) c + = do syn (S,id) [((S,id),semRules)] inhAtts ((i,[]),inp) c + +nt :: NTType -> Id -> SeqType +nt fx idx id inhAtts semRules altFromSibs + = let groupRule'' id rules = [rule | (ud,rule) <- rules, id == ud] + ownInAtts = mapInherited (groupRule'' (I, idx) semRules) altFromSibs inhAtts id + in fx idx ownInAtts + +parser :: SeqType -> [SemRule] -> Id -> InsAttVals -> M Foo +parser synRule semRules id inhAtts i c + = do + s <- get + let ((e,altFromSibs),d) = + let sRule = groupRule'' (S, LHS) semRules + ((l,newRes),st) = unState ((synRule id inhAtts semRules altFromSibs) i c) s + groupRule'' id rules = [rule | (ud,rule) <- rules, id == ud] + in ((l, mapSynthesize sRule newRes inhAtts id),st) + put d + return (e,altFromSibs) + + + + +mapSynthesize [] res downAtts id = res +mapSynthesize sems res downAtts id + = let appSems' [] vals = [] + appSems' (r:rules) vals + = let [((ud, id'), atts)] = r (vals, id) + in [((ud, id), atts)] ++ appSems' rules vals + in [(((st,inAtts), (en,appSems' sems (findAtts t))),[t]) + |(((st,inAtts), (en,synAtts)),[t]) <- res] + + +-- mapSem' [] _ _ = [] +mapInherited sems res [] id + = let appSems [] vals = [] + appSems (r:rules) vals = r (vals, id) ++ appSems rules vals + in concat [appSems sems (findAtts t) | (((st,inAtts), (en,synAtts)),[t]) <- res] + +mapInherited sems [] downAtts id + = let appSems [] vals = [] + appSems (r:rules) vals = r (vals, id) ++ appSems rules vals + in appSems sems downAtts -- concat ( map (appSems id sems) (group downAtts)) + +mapInherited sems res downAtts id + = let appSems [] vals = [] + appSems (r:rules) vals = r (vals, id) ++ appSems rules vals + in concat [appSems sems ((groupAtts downAtts) ++ synAtts ++ (findAtts t)) + | (((st,inAtts), (en,synAtts)),[t]) <- res] + +-------------------------------------- +gMax [] = [] +gMax [(a,[b])] = [(a,[b])] + +gMax [(a,[b]),(a1,[b1])] | getAVAL b >= getAVAL b1 = [(a,[b])] + | otherwise = [(a1,[b1])] + +gMax ((a,[b]):(a1,[b1]):rest) | getAVAL b >= getAVAL b1 = gMax ((a,[b]):rest) + | otherwise = gMax ((a1,[b1]):rest) + + +groupAtts [] = [] +groupAtts [(a,b)] = [(a,b)] +groupAtts [(a,b),(a1,b1)] = [(a,b++b1)] +groupAtts ((a,b):(a1,b1):rest) = (a,b++b1): groupAtts rest + +-------------------------------------- +findAtts (Branch (t:ts)) + = findAtts t ++ findAtts (Branch ts) +findAtts (SubNode ((n,i),((s,v'),(e,v)))) = v' ++ v +findAtts (Leaf (a,id)) = [] +findAtts (Branch []) = [] + +addAtts x y = x ++ y + +-------------------------------------------------------- + + +rule_i = rule I +rule_s = rule S + +rule s_or_i typ oF pID isEq userFun listOfExp + = let formAtts id spec = (id, (forNode id . spec)) + forNode id atts = [(id, atts)] + resType = userFun listOfExp + in formAtts (s_or_i,pID) (setAtt (typ undefined) . resType) + + + +---- **** ----- + +synthesized = valOf S +inherited = valOf I + +valOf :: SorI -> (a -> AttValue) -> Useless -> Id -> [(Instance, Atts)] -> Id -> [AttValue] +valOf ud typ o_f x ivs x' | x == LHS = getAttVals (ud , x') ivs typ + | otherwise = getAttVals (ud , x ) ivs typ + +getAttVals :: Instance -> [(Instance, Atts)] -> (a -> AttValue) -> [AttValue] +getAttVals x ((i,v):ivs) typ = + let typeCheck typ t = if (typ undefined) == t then True else False + getAttVals_ typ (t:tvs) = if (typ undefined) == t then (t :getAttVals_ typ tvs) + else getAttVals_ typ tvs + getAttVals_ typ [] = [] -- ErrorVal {-- 100 --} "ERROR id found but no value" + in + if(i == x) then getAttVals_ typ v else getAttVals x ivs typ +getAttVals x [] typ = [ErrorVal {-- 200 --} "ERROR no id"] + + +-------- ************************************** ------------ + +------------------------- user functions ------------------ +apply :: [(Instance,Atts)] -> Id -> ([(Instance,Atts)] -> Id -> AttValue) -> Int +apply y i x = getAVAL (x y i) +apply_ y i x = getB_OP (x y i) + +apply__ :: [(Instance,Atts)] -> Id -> ([(Instance,Atts)] -> Id -> AttValue) -> DisplayTree +apply__ y i x = getRVAL (x y i) + +applyMax y i x = getAVAL (foldr (getMax) (MaxVal 0) (x y i)) +getMax x y = MaxVal (max (getAVAL x) (getAVAL y)) + +findMax spec = \(atts,i) -> + MaxVal (foldr (max) 0 (map (applyMax atts i) spec)) +convertRep spec = \(atts,i) -> + RepVal (foldr (max) 0 (map (applyMax atts i) spec)) + +makeTree (x:xs) = \(atts,i) -> Res (B (map (apply__ atts i) (x:xs))) + +mt [a,b,c] = (B [a,b,c]) +mt [a] = (B [a]) + +----------- for arithmetic expr ----------------- +applyBiOp [e1,op,e2] + = \atts -> VAL ((getAtts getB_OP atts op ) (getAtts getAVAL atts e1 ) (getAtts getAVAL atts e2)) +getAtts f (y,i) x + = f (head (x y i)) + +----------- general copy ------------------------ +copy [b] + = \(atts,i) -> head (b atts i) +getTypVal ((a,b):abs) t | a undefined == t = b t + | otherwise = getTypVal abs t + + +----------- for arithmetic expr ----------------- + +toTree [b] = \(atts,i) -> Res (N ((map (apply atts i) [b])!!0)) + + + + +-- JUNK TEST ----- + + + +-------- MAIN ---------- +--------------- EXAMPLE EX-SPEC FOR TREE-REPLACEMENT ---------------- + +start = memoize Start + (parser + (nt tree T0) + [ + rule_i RepVal OF T0 ISEQUALTO convertRep [synthesized MaxVal OF T0] + ] + ) + +tree = memoize Tree + ( parser + (nt tree T1 *> nt tree T2 *> nt num T3) + [ rule_s MaxVal OF LHS ISEQUALTO findMax [ synthesized MaxVal OF T1, + synthesized MaxVal OF T2, + synthesized MaxVal OF T3 + ], + rule_i RepVal OF T1 ISEQUALTO convertRep [inherited RepVal OF LHS], + rule_i RepVal OF T2 ISEQUALTO convertRep [inherited RepVal OF LHS], + rule_i RepVal OF T3 ISEQUALTO convertRep [inherited RepVal OF LHS] + ] + <|> + parser + (nt num N1) + [ rule_i RepVal OF N1 ISEQUALTO convertRep [inherited RepVal OF LHS], + rule_s MaxVal OF LHS ISEQUALTO findMax [synthesized MaxVal OF N1] + ] + + + ) + + +num = memoize Num + ( + terminal (term "1") [MaxVal 1] <|> + terminal (term "2") [MaxVal 2] <|> + terminal (term "3") [MaxVal 3] <|> + terminal (term "4") [MaxVal 4] <|> + terminal (term "5") [MaxVal 5] + ) +------------------------------------------------ Arithmetic Expression ------------------------------------------------ + +eT + = memoize ET + ( + parser + (nt expr E1) + [rule_s VAL OF LHS ISEQUALTO copy [synthesized VAL OF E1]] + ) + +expr = memoize Expr + ( + parser + (nt expr E1 *> nt op O1 *> nt expr E2) + [rule_s VAL OF LHS ISEQUALTO applyBiOp [synthesized VAL OF E1, + synthesized B_OP OF O1, + synthesized VAL OF E2] + ] + + <|> + parser + (nt num N1) + [rule_s VAL OF LHS ISEQUALTO copy [synthesized MaxVal OF N1]] + ) + +op = memoize Op + ( + terminal (term "+") [B_OP (+)] <|> + terminal (term "-") [B_OP (-)] <|> + terminal (term "*") [B_OP (*)] <|> + terminal (term "/") [B_OP (div)] + ) + +------------------------------------------------ Arithmetic Expression ------------------------------------------------ + +----------- PrettyPrint ------------------------ +po :: (PP' a) => (String -> IO ()) -> a -> IO () +po act x = do + stuff <- pp' x + act $ render80 stuff + +render80 = renderStyle (style{lineLength = 80}) + + +class PP' a where + pp' :: a -> IO Doc + +instance PP' Doc where + pp' c = return c + +instance PP' Char where + pp' c = return $ text $ show c +instance PP' AttValue where + pp' (VAL i) = showio (VAL i) >>= return . text + pp' (B_OP i)= showio (B_OP i) >>= return .text + + +instance PP' Int where + pp' i = return $ text $ show i + +instance PP' Id where + pp' i = return $ text $ show i + +instance PP' a => PP' (Maybe a) where + pp' Nothing = return $ text "Nothing" + pp' (Just x) = pp' x >>= (\y -> return $ parens $ text "Just" PPH.<+> y) + +instance (PP' a, PP' b) => PP' (a,b) where + -- pp' (a,b) = parens $ pp' a PPH.<+> text "->" PPH.<+> pp' b + pp' (a,b) = pp' a >>= \z -> (pp' b >>= (\y -> return $ z PPH.<+> text "->" PPH.<+> y)) +instance PP' a => PP' [a] where + pp' [] = return $ brackets $ text "" + pp' (x:xs) = liftM sep $ (liftM2 (:)) (pp' x) (sequence [ pp' y | y <- xs ]) + +instance (Show t) => PP' (Tree t) where + -- pp' Empty = text "{_}" + pp' (Leaf x) = return $ text "Leaf" PPH.<+> text (show x) + pp' (Branch ts) = liftM2 (PPH.<+>) (return $ text "Branch") (liftM brackets $ liftM sep $ liftM (punctuate comma) $ sequence $ map pp' ts) + --pp' (SubNode (x,(s,e))) = return $ text "SubNode" PPH.<+> text (show x) PPH.<+> text (show (s,e)) + -- PPH.<+> pp' ts + +{-TODO: +format :: Mtable -> Doc +format t + = vcat + [ text (show s) + $$ + nest 3 (pp' [text "START at:" PPH.<+> pp' i PPH.<+> text "; Inherited atts:" PPH.<+> vcat [vcat [text (showID id0) PPH.<+> vcat [text (show ty0v0) |ty0v0 <-val0]|(id0,val0)<-inAt1]] PPH.<+> + text "" $$ vcat [{- text "Inherited Atts. -" + + $$ + vcat [vcat [text (showID id1) PPH.<+> vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-(nub inAtt2)]] + + $$-} nest 3 + ( text "END at:" PPH.<+> pp' end + $$ text "Synthesized Atts. -" + + $$ vcat [vcat [text (showID id1) PPH.<+> vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-synAtts]] + + $$ text "Packed Tree -" + + $$ pp' ts) + |(((st,inAtt2),(end,synAtts)), ts)<-rs] + + | ((i,inAt1),((cs,ct),rs)) <- sr ]) + + + | (s,sr) <- t ] +-} + + +showID (x,y) = show y -- only the instance + + +--- ** printing ony own atts ** --- +{-TODO: +formatAtts :: MemoL -> Mtable -> Doc +formatAtts key t + = vcat + [ text (show s) + $$ + nest 3 (pp' [text "START at:" PPH.<+> pp' i PPH.<+> text "; Inherited atts:" PPH.<+> vcat [vcat [text (showID id0) PPH.<+> vcat [text (show ty0v0) |ty0v0 <-val0]|(id0,val0)<-inAt1]] PPH.<+> + text "" $$ vcat [nest 3 + ( text "END at:" PPH.<+> pp' end + $$ text "Synthesized Atts. -" + + $$ vcat [vcat [text (showID id1) PPH.<+> vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-synAtts]] + + -- $$ text "Packed Tree -" + + {- $$ pp' ts -} ) + |(((st,inAtt2),(end,synAtts)), ts)<-rs] + + | ((i,inAt1),((cs,ct),rs)) <- sr ]) + + + | (s,sr) <- t, s == key ] +-} + +formatAttsFinalAlt :: MemoL -> Int -> State -> IO [Doc] +formatAttsFinalAlt key e t = + --return [pp' [vcat [(vcat [vcat [vcat [text (show ty1v1) |ty1v1<-val1] + sequence [(sequence [liftM vcat $ sequence [(liftM vcat $ sequence [liftM vcat $ sequence [liftM vcat $ sequence [liftM text (showio ty1v1) | ty1v1<-val1] + |(id1,val1)<-synAtts]] ) + |(((st,inAtt2),(end,synAtts)), ts)<-rs, end == e] + | ((i,inAt1),((cs,ct),rs)) <- sr ]) >>= pp' | (s,sr) <- t, s == key ] + +{-formatAttsFinal key t = + [(pp' [vcat [(vcat [vcat [vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-synAtts]] )|(((st,inAtt2),(end,synAtts)), ts)<-rs] + + | ((i,inAt1),((cs,ct),rs)) <- sr ]) | (s,sr) <- t, s == key ]-} + +-- *************** for printing the fist element of the return pair *************** +{-TODO: +formatForFst ::Result -> Doc +formatForFst res = vcat + -- [text (show ty0v0) |ty0v0 <-val0]|(id0,val0)<-inAt1]] PPH.PPH.<+> text "" $$ vcat + + [ text "START at:" PPH.<+> pp' st + + {- + $$ text "Inherited Atts. -" + $$ vcat [vcat [text (showID id1) PPH.<+> vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-inAtt2]] + -} + + PPH.<+> text "END at:" PPH.<+> pp' end + $$ nest 3 + (text "Synthesized Atts. of" + + PPH.<+> vcat [vcat [text (showID id1) PPH.<+> text "::" PPH.<+> vcat [text (show ty1v1) |ty1v1<-val1]|(id1,val1)<-synAtts]] + + $$ pp' ts) + |(((st,inAtt2),(end,synAtts)), ts)<-res] + + +-} +-- *************** for printing the fist element of the return pair *************** + +----------- PrettyPrint -------------------------- +
+ Getts.hs view
@@ -0,0 +1,148 @@+{-# LANGUAGE FlexibleInstances #-} + +module Getts where +import Data.List +import Control.Monad +import Debug.Trace + +--For endpoint query +import Data.RDF hiding (triple, Triple) +import Database.HSparql.Connection +import Database.HSparql.QueryGenerator +import Data.Text hiding (head, concat, map, zip, drop, length) +import System.IO.Unsafe + +addUri fragment = namespace_uri ++ fragment + +endpoint_uri = "http://speechweb2.cs.uwindsor.ca/sparql" +namespace_uri = "http://solarman.richard.myweb.cs.uwindsor.ca#" + +--getts returns all triples in the triple store that match the given parameters +class TripleStore m where + getts_1 :: m -> (Event, String, String) -> IO [String] + getts_2 :: m -> (Event, String, String) -> IO [String] + getts_3 :: m -> (Event, String, String) -> IO [String] + +type Event = String +type Triple = (Event, String, String) + +--For the "In Program" triple store +instance TripleStore [Triple] where + getts_1 ev_data ("?", b, c) = return [x | (x,y,z) <- ev_data, b == y, c == z] + getts_2 ev_data (a, "?", c) = return [y | (x,y,z) <- ev_data, a == x, c == z] + getts_3 ev_data (a, b, "?") = return [z | (x,y,z) <- ev_data, a == x, b == y] + +data SPARQLBackend = SPARQL String + +--the String in this instance is to be the endpoint that you wish to query +instance TripleStore SPARQLBackend where + getts_1 (SPARQL endpoint) ("?", b, c) = return $ removeUri $ preprocess $ getts_1'(pack "?", pack (addUri b), pack (addUri c)) + where + getts_1' :: (t, Text, Text) -> IO [[BindingValue]] + getts_1' (a, b, c) = do + (Just s) <- selectQuery endpoint getts_1_query + return s + where + getts_1_query = do + x <- var + triple x (iriRef b) (iriRef c) + return SelectQuery { queryVars = [x] } + + getts_2 (SPARQL endpoint) (a, "?", c) = return $ removeUri $ preprocess $ getts_2'(pack (addUri a), pack "?", pack (addUri c)) + where + getts_2' :: (Text, Text, Text) -> IO [[BindingValue]] + getts_2' (a, b, c) = do + (Just s) <- selectQuery endpoint getts_2_query + return s + where + getts_2_query = do + x <- var + triple (iriRef a) x (iriRef c) + return SelectQuery { queryVars = [x] } + + getts_3 (SPARQL endpoint) (a, b, "?") = return $ removeUri $ preprocess $ getts_3'(pack (addUri a), pack (addUri b), pack "?") + where + getts_3' :: (Text, Text, Text) -> IO [[BindingValue]] + getts_3' (a, b, c) = do + (Just s) <- selectQuery endpoint getts_3_query + return s + where + getts_3_query = do + x <- var + triple (iriRef a) (iriRef b) x + return SelectQuery { queryVars = [x] } + + --addUri endpoint entry = namespace_uri ++ entry --the namespace of the entry + +removeUri :: [String] -> [String] +removeUri s = let l = length namespace_uri in + map (drop l) s + +preprocess :: IO [[BindingValue]] -> [String] +preprocess = map deconstruct . concat . dropDups . unsafeDupablePerformIO + +deconstruct :: BindingValue -> String +deconstruct value = do + let (Bound node) = value + case node of + UNode strURI -> unpack strURI + LNode (PlainL strLit) -> unpack strLit + +dropDups :: (Eq a) => [a] -> [a] +dropDups [] = [] +dropDups (x:xs) = if elem x xs + then dropDups xs + else x : dropDups xs + +get_subjs_for_ev :: (TripleStore m) => m -> Event -> IO [String] +get_subjs_for_ev ev_data ev = getts_3 ev_data (ev, "subject", "?") + +get_subjs_for_evs :: (TripleStore m) => m -> [Event] -> IO [String] +get_subjs_for_evs ev_data evs = liftM concat $ mapM (get_subjs_for_ev ev_data) evs + +--Get members of named set +get_members :: (TripleStore m) => m -> String -> IO [String] +get_members ev_data set = do + evs_with_set_as_object <- getts_1 ev_data ("?", "object", set) + evs_with_type_membership <- getts_1 ev_data ("?", "type", "membership") + get_subjs_for_evs ev_data $ intersect evs_with_set_as_object evs_with_type_membership + + +--Get all subjects of a given event type +get_subjs_of_event_type :: (TripleStore m) => m -> String -> IO [String] +get_subjs_of_event_type ev_data ev_type = do + events <- getts_1 ev_data ("?", "type", ev_type) + get_subjs_for_evs ev_data events + + +{-collect accepts a binary relation as input and computes the image of each +element in the projection of the left column of the relation, under the relation. + +Note: Since == is an equivalence relation, if multiple elements in the projection +of the left column are in the same equivalence class, only the first member of that +equivalence class that appears in the input list (as the left hand column of a tuple) +will appear in the output (as the left hand column of a tuple). + +That is, the first element of that equivalence class that appears in the input list +will be chosen to represent the entire equivalence class in the output. + +-} +collect :: [(String, String)] -> [(String, [String])] +collect [] = [] +collect ((x,y):t) = + (x, y:[e2 | (e1, e2) <- t, e1 == x]) : collect [(e1, e2) | (e1, e2) <- t, e1 /= x] + + +--make_image accepts an event type as input, determines all subjects for +--all events of that type, and computes the image under the relation +--for each subject as described in the collect function +--Arguments: triple store, Event type (i.e. join_rel), Entity type (i.e. subject, object) +make_image :: (TripleStore m) => m -> String -> String -> IO [(String,[String])] +make_image ev_data ev_type entity_type = do + evs <- getts_1 ev_data ("?", "type", ev_type) + pairs <- liftM concat $ mapM (\ev -> do + ents <- getts_3 ev_data (ev, entity_type,"?") + return $ zip ents (repeat ev)) evs + return $ collect pairs + +
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2014, Rahmatullah Hafiz, Shane Peelar, and Eric Matthews + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Rahmatullah Hafiz, Shane Peelar, and Eric Matthews nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Main.hs view
@@ -0,0 +1,126 @@+#!/opt/csw/bin/runhaskell+module Main where+import qualified SolarmanTriplestore as App+import Text.PrettyPrint.HughesPJ+import Network.CGI++cgiMain :: CGI CGIResult+cgiMain = do+ (Just input) <- getInput "query"+ out <- liftIO $ interpret' input+ output out+++main :: IO ()+main = runCGI (handleErrors cgiMain)++interpret :: String -> String+interpret "ask them to be quiet" + = "Hello. Quiet please. My "+ ++ "masters are going to talk. Quiet please."++interpret "introduce yourself solar man" + = "Hello. Hello. My name is Solar man."+ ++ " Thank you for coming to my party."+ ++ " I am very pleased to meet you."++interpret "what can i say" + = "You can say. hello there. what is your name."+ ++ " you can ask me about the moons and the planets."+ ++ " such as, who discovered a moon."+ ++ " who discovered two moons."+ ++ " which moons were discovered by kuiper."+ ++ " who discovered phobos."+ ++ " which planet is orbited by miranda."+ ++ " how many moons orbit saturn."+ ++ " and other similar questions."+ ++ " who are you. where do you live."+ ++ " tell me a joke. who made you." + ++ " who do you know. what is your favorite band."+ ++ " who is the vice president at the university of windsor." + ++ " who is the president at the university of windsor." + ++ " who is the dean of science at the university of windsor."++interpret "hi" = "Hi there. My name is solar man"+interpret "hello" = "hello. My name is solar man."+interpret "hello there" = "Good day to you"+interpret "hello solar man" = "hello. How are you"+interpret "goodbye" = "goodbye. See you in the stars."+interpret "goodbye solar man" = interpret "goodbye"+interpret "fine thanks" = "Good, so am I. Except for a bit of back ache"+interpret "thanks" = "you are welcome"+interpret "thanks solar man" = "you are most welcome"+interpret "yes please" = "yes please? What did you want? My memory is getting bad"+interpret "what is your name" = "My name is solar man."+interpret "who are you" + = "My name is solar man. I know about the planets and the"+ ++ " moons, and the people who discovered them"+interpret "where do you live" + = "I live in a dark cold computer. "+ ++ "The center of my universe is Lambton Tower, at the University of Windsor."+interpret "what do you know" + = "Not much I am afraid. I am just beginning to learn. I know a bit about "+ ++ "the planets, the moons, and the people who discovered them. "+ ++ "My master will teach me some more when he gets another grant "+interpret "how old are you"+ = "older than you think. And much older than my friends Judy and Monty."+interpret "who made you" + = "I. B. M. and Opera Software made my ears and vocal chords. William Ma connected my "+ ++ "ears to my brain, and Doctor Frost, master of the universe, made "+ ++ "my brain"++interpret "what is your favorite band"+ = "Pink Floyd. I love, dark side of the moon"++interpret "who is the vice president at the university of windsor" + = "Leo Groarke"++interpret "who is the president at the university of windsor" + = "Doctor Alan Wildeman."++interpret "who is the dean of science at the university of windsor"+ = "Doctor Marlys Koschinsky"++interpret "tell me a poem" = "do not know any poems. But my friend, Judy, does"+++interpret "know any poems" = "no but my friend, Judy does;"+++interpret "tell me a joke" + = "did you hear about the Computer Scientist who thought his computer"+ ++ "was a car. He had a hard drive home every day"++interpret "know any jokes" + = "just one. My friend Monty knows one too."++interpret "who is judy" = "She is my friend. She knows about poetry"++interpret "who is monty" + = "Monty is my friend. He is a student"+ ++ " at the university of Windsor."+interpret "can I talk to judy" + ="yes. here she is"+ ++ "<goto>http://cs.uwindsor.ca/~speechweb/p_d_speechweb/judy/judy.xml</goto>"++interpret "can I talk to monty" + ="yes. here he is"+ ++ "<goto>http://cs.uwindsor.ca/~speechweb/p_d_speechweb/monty/monty.xml</goto>"++interpret "can I talk to solar man" + ="yes. here he is"+ ++ "<goto>http://cs.uwindsor.ca/~speechweb/p_d_speechweb/solarman/solarman.xml</goto>"++interpret "who do you know" = "i only know three people. Judy, Monty, and Solarman."++interpret _ = "BLANKVALNOTUSED"++interpret' input = do+ let firstpass = interpret input+ if firstpass == "BLANKVALNOTUSED" then do+ output <- App.main input+ let formatted = render $ vcat $ output+ if null formatted then return "Do not know that one yet, will work on it tonight" else return $ formatted+ else return firstpass++
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple +main = defaultMain
+ SolarmanTriplestore.hs view
@@ -0,0 +1,5245 @@+{-# LANGUAGE NoMonomorphismRestriction #-} +module SolarmanTriplestore where + +import Getts +import Data.List as List +import qualified Data.Set as Set +import AGParser2 +import TypeAg2 +import Control.Monad +import Debug.Trace + +--change between remoteData and localData +--dataStore = remoteData +dataStore = localData -- selects local database + +remoteData = endpoint_uri + +localData = [("event1000", "object", "sol"), + ("event1000", "subject", "mercury"), + ("event1000", "type", "orbit_ev"), + ("event1001", "object", "sol"), + ("event1001", "subject", "venus"), + ("event1001", "type", "orbit_ev"), + ("event1002", "object", "sol"), + ("event1002", "subject", "earth"), + ("event1002", "type", "orbit_ev"), + ("event1003", "object", "sol"), + ("event1003", "subject", "mars"), + ("event1003", "type", "orbit_ev"), + ("event1004", "object", "sol"), + ("event1004", "subject", "jupiter"), + ("event1004", "type", "orbit_ev"), + ("event1005", "object", "sol"), + ("event1005", "subject", "saturn"), + ("event1005", "type", "orbit_ev"), + ("event1006", "object", "sol"), + ("event1006", "subject", "uranus"), + ("event1006", "type", "orbit_ev"), + ("event1007", "object", "sol"), + ("event1007", "subject", "neptune"), + ("event1007", "type", "orbit_ev"), + ("event1008", "object", "sol"), + ("event1008", "subject", "pluto"), + ("event1008", "type", "orbit_ev"), + ("event1009", "object", "earth"), + ("event1009", "subject", "luna"), + ("event1009", "type", "orbit_ev"), + ("event1010", "object", "mars"), + ("event1010", "subject", "phobos"), + ("event1010", "type", "orbit_ev"), + ("event1011", "object", "mars"), + ("event1011", "subject", "deimos"), + ("event1011", "type", "orbit_ev"), + ("event1012", "object", "jupiter"), + ("event1012", "subject", "almathea"), + ("event1012", "type", "orbit_ev"), + ("event1013", "object", "jupiter"), + ("event1013", "subject", "io"), + ("event1013", "type", "orbit_ev"), + ("event1014", "object", "jupiter"), + ("event1014", "subject", "europa"), + ("event1014", "type", "orbit_ev"), + ("event1015", "object", "jupiter"), + ("event1015", "subject", "ganymede"), + ("event1015", "type", "orbit_ev"), + ("event1016", "object", "jupiter"), + ("event1016", "subject", "callisto"), + ("event1016", "type", "orbit_ev"), + ("event1017", "object", "jupiter"), + ("event1017", "subject", "leda"), + ("event1017", "type", "orbit_ev"), + ("event1018", "object", "jupiter"), + ("event1018", "subject", "himalia"), + ("event1018", "type", "orbit_ev"), + ("event1019", "object", "jupiter"), + ("event1019", "subject", "lysithea"), + ("event1019", "type", "orbit_ev"), + ("event1020", "object", "jupiter"), + ("event1020", "subject", "elara"), + ("event1020", "type", "orbit_ev"), + ("event1021", "object", "jupiter"), + ("event1021", "subject", "ananke"), + ("event1021", "type", "orbit_ev"), + ("event1022", "object", "jupiter"), + ("event1022", "subject", "carme"), + ("event1022", "type", "orbit_ev"), + ("event1023", "object", "jupiter"), + ("event1023", "subject", "pasiphae"), + ("event1023", "type", "orbit_ev"), + ("event1024", "object", "jupiter"), + ("event1024", "subject", "sinope"), + ("event1024", "type", "orbit_ev"), + ("event1025", "object", "jupiter"), + ("event1025", "subject", "thebe"), + ("event1025", "type", "orbit_ev"), + ("event1026", "object", "saturn"), + ("event1026", "subject", "epimetheus"), + ("event1026", "type", "orbit_ev"), + ("event1027", "object", "saturn"), + ("event1027", "subject", "janus"), + ("event1027", "type", "orbit_ev"), + ("event1028", "object", "saturn"), + ("event1028", "subject", "mimas"), + ("event1028", "type", "orbit_ev"), + ("event1029", "object", "saturn"), + ("event1029", "subject", "enceladus"), + ("event1029", "type", "orbit_ev"), + ("event1030", "object", "saturn"), + ("event1030", "subject", "tethys"), + ("event1030", "type", "orbit_ev"), + ("event1031", "object", "saturn"), + ("event1031", "subject", "dione"), + ("event1031", "type", "orbit_ev"), + ("event1032", "object", "saturn"), + ("event1032", "subject", "rhea"), + ("event1032", "type", "orbit_ev"), + ("event1033", "object", "saturn"), + ("event1033", "subject", "titan"), + ("event1033", "type", "orbit_ev"), + ("event1034", "object", "saturn"), + ("event1034", "subject", "hyperion"), + ("event1034", "type", "orbit_ev"), + ("event1035", "object", "saturn"), + ("event1035", "subject", "iapetus"), + ("event1035", "type", "orbit_ev"), + ("event1036", "object", "saturn"), + ("event1036", "subject", "phoebe"), + ("event1036", "type", "orbit_ev"), + ("event1037", "object", "uranus"), + ("event1037", "subject", "miranda"), + ("event1037", "type", "orbit_ev"), + ("event1038", "object", "uranus"), + ("event1038", "subject", "ariel"), + ("event1038", "type", "orbit_ev"), + ("event1039", "object", "uranus"), + ("event1039", "subject", "umbriel"), + ("event1039", "type", "orbit_ev"), + ("event1040", "object", "uranus"), + ("event1040", "subject", "titania"), + ("event1040", "type", "orbit_ev"), + ("event1041", "object", "uranus"), + ("event1041", "subject", "oberon"), + ("event1041", "type", "orbit_ev"), + ("event1042", "object", "neptune"), + ("event1042", "subject", "triton"), + ("event1042", "type", "orbit_ev"), + ("event1043", "object", "neptune"), + ("event1043", "subject", "nereid"), + ("event1043", "type", "orbit_ev"), + ("event1044", "object", "pluto"), + ("event1044", "subject", "charon"), + ("event1044", "type", "orbit_ev"), + ("event1045", "location", "us_naval_observatory"), + ("event1045", "object", "phobos"), + ("event1045", "subject", "hall"), + ("event1045", "type", "discover_ev"), + ("event1045", "with_implement", "refractor_telescope_1"), + ("event1045", "year", "1877"), + ("event1046", "location", "us_naval_observatory"), + ("event1046", "object", "deimos"), + ("event1046", "subject", "hall"), + ("event1046", "type", "discover_ev"), + ("event1046", "with_implement", "refractor_telescope_1"), + ("event1046", "year", "1877"), + ("event1047", "location", "mt_hamilton"), + ("event1047", "object", "almathea"), + ("event1047", "subject", "bernard"), + ("event1047", "type", "discover_ev"), + ("event1047", "with_implement", "refractor_telescope_2"), + ("event1047", "year", "1892"), + ("event1048", "location", "padua"), + ("event1048", "object", "io"), + ("event1048", "subject", "galileo"), + ("event1048", "type", "discover_ev"), + ("event1048", "with_implement", "galilean_telescope_1"), + ("event1048", "year", "1610"), + ("event1049", "location", "padua"), + ("event1049", "object", "europa"), + ("event1049", "subject", "galileo"), + ("event1049", "type", "discover_ev"), + ("event1049", "with_implement", "galilean_telescope_1"), + ("event1049", "year", "1610"), + ("event1050", "location", "padua"), + ("event1050", "object", "ganymede"), + ("event1050", "subject", "galileo"), + ("event1050", "type", "discover_ev"), + ("event1050", "with_implement", "galilean_telescope_1"), + ("event1050", "year", "1610"), + ("event1051", "location", "padua"), + ("event1051", "object", "callisto"), + ("event1051", "subject", "galileo"), + ("event1051", "type", "discover_ev"), + ("event1051", "with_implement", "galilean_telescope_1"), + ("event1051", "year", "1610"), + ("event1052", "location", "mt_palomar"), + ("event1052", "object", "leda"), + ("event1052", "subject", "kowal"), + ("event1052", "type", "discover_ev"), + ("event1052", "with_implement", "schmidt_telescope"), + ("event1052", "year", "1974"), + ("event1053", "object", "thebe"), + ("event1053", "subject", "voyager_science_team"), + ("event1053", "type", "discover_ev"), + ("event1053", "with_implement", "voyager_1"), + ("event1053", "year", "1979"), + ("event1054", "location", "mt_hamilton"), + ("event1054", "object", "himalia"), + ("event1054", "subject", "perrine"), + ("event1054", "type", "discover_ev"), + ("event1054", "with_implement", "crossley_reflector_telescope"), + ("event1054", "year", "1904"), + ("event1055", "location", "mt_hamilton"), + ("event1055", "object", "elara"), + ("event1055", "subject", "perrine"), + ("event1055", "type", "discover_ev"), + ("event1055", "with_implement", "crossley_reflector_telescope"), + ("event1055", "year", "1905"), + ("event1056", "location", "mt_wilson"), + ("event1056", "object", "lysithea"), + ("event1056", "subject", "nicholson"), + ("event1056", "type", "discover_ev"), + ("event1056", "with_implement", "hooker_telescope"), + ("event1056", "year", "1938"), + ("event1057", "location", "mt_wilson"), + ("event1057", "object", "ananke"), + ("event1057", "subject", "nicholson"), + ("event1057", "type", "discover_ev"), + ("event1057", "with_implement", "hooker_telescope"), + ("event1057", "year", "1951"), + ("event1058", "location", "mt_wilson"), + ("event1058", "object", "carme"), + ("event1058", "subject", "nicholson"), + ("event1058", "type", "discover_ev"), + ("event1058", "with_implement", "hooker_telescope"), + ("event1058", "year", "1938"), + ("event1059", "location", "mt_hamilton"), + ("event1059", "object", "sinope"), + ("event1059", "subject", "nicholson"), + ("event1059", "type", "discover_ev"), + ("event1059", "with_implement", "refractor_telescope_2"), + ("event1059", "year", "1914"), + ("event1060", "location", "greenwich"), + ("event1060", "object", "pasiphae"), + ("event1060", "subject", "melotte"), + ("event1060", "type", "discover_ev"), + ("event1060", "with_implement", "cassegrain_telescope"), + ("event1060", "year", "1908"), + ("event1061", "location", "kitt_peak"), + ("event1061", "object", "epimetheus"), + ("event1061", "subject", "science_team_7"), + ("event1061", "type", "discover_ev"), + ("event1061", "year", "1977"), + ("event1062", "location", "liverpool"), + ("event1062", "object", "hyperion"), + ("event1062", "subject", "lassell"), + ("event1062", "type", "discover_ev"), + ("event1062", "year", "1848"), + ("event1063", "location", "pic_du_midi"), + ("event1063", "object", "janus"), + ("event1063", "subject", "dollfus"), + ("event1063", "type", "discover_ev"), + ("event1063", "with_implement", "telescope_1"), + ("event1063", "year", "1966"), + ("event1064", "location", "slough"), + ("event1064", "object", "mimas"), + ("event1064", "subject", "herschel"), + ("event1064", "type", "discover_ev"), + ("event1064", "with_implement", "reflector_telescope_1"), + ("event1064", "year", "1789"), + ("event1065", "location", "slough"), + ("event1065", "object", "enceladus"), + ("event1065", "subject", "herschel"), + ("event1065", "type", "discover_ev"), + ("event1065", "with_implement", "reflector_telescope_1"), + ("event1065", "year", "1789"), + ("event1066", "location", "slough"), + ("event1066", "object", "titania"), + ("event1066", "subject", "herschel"), + ("event1066", "type", "discover_ev"), + ("event1066", "year", "1787"), + ("event1067", "location", "slough"), + ("event1067", "object", "oberon"), + ("event1067", "subject", "herschel"), + ("event1067", "type", "discover_ev"), + ("event1067", "year", "1787"), + ("event1068", "location", "paris"), + ("event1068", "object", "tethys"), + ("event1068", "subject", "cassini"), + ("event1068", "type", "discover_ev"), + ("event1068", "with_implement", "aerial_telescope_1"), + ("event1068", "year", "1684"), + ("event1069", "location", "paris"), + ("event1069", "object", "dione"), + ("event1069", "subject", "cassini"), + ("event1069", "type", "discover_ev"), + ("event1069", "with_implement", "aerial_telescope_1"), + ("event1069", "year", "1684"), + ("event1070", "location", "paris"), + ("event1070", "object", "rhea"), + ("event1070", "subject", "cassini"), + ("event1070", "type", "discover_ev"), + ("event1070", "with_implement", "aerial_telescope_1"), + ("event1070", "year", "1672"), + ("event1071", "location", "paris"), + ("event1071", "object", "iapetus"), + ("event1071", "subject", "cassini"), + ("event1071", "type", "discover_ev"), + ("event1071", "with_implement", "aerial_telescope_1"), + ("event1071", "year", "1671"), + ("event1072", "location", "the_hague"), + ("event1072", "object", "titan"), + ("event1072", "subject", "huygens"), + ("event1072", "type", "discover_ev"), + ("event1072", "with_implement", "refractor_telescope_4"), + ("event1072", "year", "1655"), + ("event1073", "location", "cambridge"), + ("event1073", "object", "hyperion"), + ("event1073", "subject", "bond"), + ("event1073", "type", "discover_ev"), + ("event1073", "with_implement", "reflector_telescope_3"), + ("event1073", "year", "1848"), + ("event1074", "location", "arequipa"), + ("event1074", "object", "phoebe"), + ("event1074", "subject", "pickering"), + ("event1074", "type", "discover_ev"), + ("event1074", "with_implement", "bruce_astrograph"), + ("event1074", "year", "1898"), + ("event1075", "location", "fort_davis"), + ("event1075", "object", "miranda"), + ("event1075", "subject", "kuiper"), + ("event1075", "type", "discover_ev"), + ("event1075", "year", "1948"), + ("event1076", "location", "fort_davis"), + ("event1076", "object", "nereid"), + ("event1076", "subject", "kuiper"), + ("event1076", "type", "discover_ev"), + ("event1076", "with_implement", "ground_based_telescope_3"), + ("event1076", "year", "1949"), + ("event1077", "location", "liverpool"), + ("event1077", "object", "ariel"), + ("event1077", "subject", "lassell"), + ("event1077", "type", "discover_ev"), + ("event1077", "with_implement", "reflector_telescope_3"), + ("event1077", "year", "1851"), + ("event1078", "location", "liverpool"), + ("event1078", "object", "umbriel"), + ("event1078", "subject", "lassell"), + ("event1078", "type", "discover_ev"), + ("event1078", "with_implement", "reflector_telescope_3"), + ("event1078", "year", "1851"), + ("event1079", "type", "discover_ev"), + ("event1080", "object", "sun"), + ("event1080", "subject", "sol"), + ("event1080", "type", "membership"), + ("event1081", "object", "planet"), + ("event1081", "subject", "mercury"), + ("event1081", "type", "membership"), + ("event1082", "object", "planet"), + ("event1082", "subject", "venus"), + ("event1082", "type", "membership"), + ("event1083", "object", "planet"), + ("event1083", "subject", "earth"), + ("event1083", "type", "membership"), + ("event1084", "object", "planet"), + ("event1084", "subject", "mars"), + ("event1084", "type", "membership"), + ("event1085", "object", "planet"), + ("event1085", "subject", "jupiter"), + ("event1085", "type", "membership"), + ("event1086", "object", "planet"), + ("event1086", "subject", "saturn"), + ("event1086", "type", "membership"), + ("event1087", "object", "planet"), + ("event1087", "subject", "uranus"), + ("event1087", "type", "membership"), + ("event1088", "object", "planet"), + ("event1088", "subject", "neptune"), + ("event1088", "type", "membership"), + ("event1089", "object", "planet"), + ("event1089", "subject", "pluto"), + ("event1089", "type", "membership"), + ("event1090", "object", "moon"), + ("event1090", "subject", "luna"), + ("event1090", "type", "membership"), + ("event1091", "object", "moon"), + ("event1091", "subject", "phobos"), + ("event1091", "type", "membership"), + ("event1092", "object", "moon"), + ("event1092", "subject", "deimos"), + ("event1092", "type", "membership"), + ("event1093", "object", "moon"), + ("event1093", "subject", "almathea"), + ("event1093", "type", "membership"), + ("event1094", "object", "moon"), + ("event1094", "subject", "io"), + ("event1094", "type", "membership"), + ("event1095", "object", "moon"), + ("event1095", "subject", "europa"), + ("event1095", "type", "membership"), + ("event1096", "object", "moon"), + ("event1096", "subject", "ganymede"), + ("event1096", "type", "membership"), + ("event1097", "object", "moon"), + ("event1097", "subject", "callisto"), + ("event1097", "type", "membership"), + ("event1098", "object", "moon"), + ("event1098", "subject", "leda"), + ("event1098", "type", "membership"), + ("event1099", "object", "moon"), + ("event1099", "subject", "himalia"), + ("event1099", "type", "membership"), + ("event1100", "object", "moon"), + ("event1100", "subject", "lysithea"), + ("event1100", "type", "membership"), + ("event1101", "object", "moon"), + ("event1101", "subject", "elara"), + ("event1101", "type", "membership"), + ("event1102", "object", "moon"), + ("event1102", "subject", "ananke"), + ("event1102", "type", "membership"), + ("event1103", "object", "moon"), + ("event1103", "subject", "carme"), + ("event1103", "type", "membership"), + ("event1104", "object", "moon"), + ("event1104", "subject", "pasiphae"), + ("event1104", "type", "membership"), + ("event1105", "object", "moon"), + ("event1105", "subject", "sinope"), + ("event1105", "type", "membership"), + ("event1106", "object", "moon"), + ("event1106", "subject", "thebe"), + ("event1106", "type", "membership"), + ("event1107", "object", "moon"), + ("event1107", "subject", "epimetheus"), + ("event1107", "type", "membership"), + ("event1108", "object", "moon"), + ("event1108", "subject", "janus"), + ("event1108", "type", "membership"), + ("event1109", "object", "moon"), + ("event1109", "subject", "mimas"), + ("event1109", "type", "membership"), + ("event1110", "object", "moon"), + ("event1110", "subject", "enceladus"), + ("event1110", "type", "membership"), + ("event1111", "object", "moon"), + ("event1111", "subject", "tethys"), + ("event1111", "type", "membership"), + ("event1112", "object", "moon"), + ("event1112", "subject", "dione"), + ("event1112", "type", "membership"), + ("event1113", "object", "moon"), + ("event1113", "subject", "rhea"), + ("event1113", "type", "membership"), + ("event1114", "object", "moon"), + ("event1114", "subject", "titan"), + ("event1114", "type", "membership"), + ("event1115", "object", "moon"), + ("event1115", "subject", "hyperion"), + ("event1115", "type", "membership"), + ("event1116", "object", "moon"), + ("event1116", "subject", "iapetus"), + ("event1116", "type", "membership"), + ("event1117", "object", "moon"), + ("event1117", "subject", "phoebe"), + ("event1117", "type", "membership"), + ("event1118", "object", "moon"), + ("event1118", "subject", "miranda"), + ("event1118", "type", "membership"), + ("event1119", "object", "moon"), + ("event1119", "subject", "ariel"), + ("event1119", "type", "membership"), + ("event1120", "object", "moon"), + ("event1120", "subject", "umbriel"), + ("event1120", "type", "membership"), + ("event1121", "object", "moon"), + ("event1121", "subject", "titania"), + ("event1121", "type", "membership"), + ("event1122", "object", "moon"), + ("event1122", "subject", "oberon"), + ("event1122", "type", "membership"), + ("event1123", "object", "moon"), + ("event1123", "subject", "triton"), + ("event1123", "type", "membership"), + ("event1124", "object", "moon"), + ("event1124", "subject", "nereid"), + ("event1124", "type", "membership"), + ("event1125", "object", "moon"), + ("event1125", "subject", "charon"), + ("event1125", "type", "membership"), + ("event1126", "object", "person"), + ("event1126", "subject", "hall"), + ("event1126", "type", "membership"), + ("event1127", "object", "person"), + ("event1127", "subject", "bernard"), + ("event1127", "type", "membership"), + ("event1128", "object", "person"), + ("event1128", "subject", "galileo"), + ("event1128", "type", "membership"), + ("event1129", "object", "person"), + ("event1129", "subject", "kowal"), + ("event1129", "type", "membership"), + ("event1130", "object", "person"), + ("event1130", "subject", "perrine"), + ("event1130", "type", "membership"), + ("event1131", "object", "person"), + ("event1131", "subject", "nicholson"), + ("event1131", "type", "membership"), + ("event1132", "object", "person"), + ("event1132", "subject", "melotte"), + ("event1132", "type", "membership"), + ("event1133", "object", "person"), + ("event1133", "subject", "larson"), + ("event1133", "type", "membership"), + ("event1134", "object", "person"), + ("event1134", "subject", "fountain"), + ("event1134", "type", "membership"), + ("event1135", "object", "person"), + ("event1135", "subject", "dollfus"), + ("event1135", "type", "membership"), + ("event1136", "object", "person"), + ("event1136", "subject", "herschel"), + ("event1136", "type", "membership"), + ("event1137", "object", "person"), + ("event1137", "subject", "cassini"), + ("event1137", "type", "membership"), + ("event1138", "object", "person"), + ("event1138", "subject", "huygens"), + ("event1138", "type", "membership"), + ("event1139", "object", "person"), + ("event1139", "subject", "bond"), + ("event1139", "type", "membership"), + ("event1140", "object", "person"), + ("event1140", "subject", "pickering"), + ("event1140", "type", "membership"), + ("event1141", "object", "person"), + ("event1141", "subject", "kuiper"), + ("event1141", "type", "membership"), + ("event1142", "object", "person"), + ("event1142", "subject", "lassell"), + ("event1142", "type", "membership"), + ("event1143", "object", "atmospheric"), + ("event1143", "subject", "venus"), + ("event1143", "type", "membership"), + ("event1144", "object", "atmospheric"), + ("event1144", "subject", "earth"), + ("event1144", "type", "membership"), + ("event1145", "object", "atmospheric"), + ("event1145", "subject", "io"), + ("event1145", "type", "membership"), + ("event1146", "object", "atmospheric"), + ("event1146", "subject", "mars"), + ("event1146", "type", "membership"), + ("event1147", "object", "atmospheric"), + ("event1147", "subject", "titan"), + ("event1147", "type", "membership"), + ("event1148", "object", "atmospheric"), + ("event1148", "subject", "venus"), + ("event1148", "type", "membership"), + ("event1149", "object", "blue"), + ("event1149", "subject", "earth"), + ("event1149", "type", "membership"), + ("event1150", "object", "blue"), + ("event1150", "subject", "neptune"), + ("event1150", "type", "membership"), + ("event1151", "object", "blue"), + ("event1151", "subject", "saturn"), + ("event1151", "type", "membership"), + ("event1152", "object", "blue"), + ("event1152", "subject", "uranus"), + ("event1152", "type", "membership"), + ("event1153", "object", "depressed"), + ("event1153", "subject", "hall"), + ("event1153", "type", "membership"), + ("event1154", "object", "solid"), + ("event1154", "subject", "venus"), + ("event1154", "type", "membership"), + ("event1155", "object", "solid"), + ("event1155", "subject", "almathea"), + ("event1155", "type", "membership"), + ("event1156", "object", "solid"), + ("event1156", "subject", "ariel"), + ("event1156", "type", "membership"), + ("event1157", "object", "solid"), + ("event1157", "subject", "callisto"), + ("event1157", "type", "membership"), + ("event1158", "object", "solid"), + ("event1158", "subject", "charon"), + ("event1158", "type", "membership"), + ("event1159", "object", "solid"), + ("event1159", "subject", "deimos"), + ("event1159", "type", "membership"), + ("event1160", "object", "solid"), + ("event1160", "subject", "dione"), + ("event1160", "type", "membership"), + ("event1161", "object", "solid"), + ("event1161", "subject", "earth"), + ("event1161", "type", "membership"), + ("event1162", "object", "solid"), + ("event1162", "subject", "enceladus"), + ("event1162", "type", "membership"), + ("event1163", "object", "solid"), + ("event1163", "subject", "europa"), + ("event1163", "type", "membership"), + ("event1164", "object", "solid"), + ("event1164", "subject", "ganymede"), + ("event1164", "type", "membership"), + ("event1165", "object", "solid"), + ("event1165", "subject", "hyperion"), + ("event1165", "type", "membership"), + ("event1166", "object", "solid"), + ("event1166", "subject", "iapetus"), + ("event1166", "type", "membership"), + ("event1167", "object", "solid"), + ("event1167", "subject", "io"), + ("event1167", "type", "membership"), + ("event1168", "object", "solid"), + ("event1168", "subject", "janus"), + ("event1168", "type", "membership"), + ("event1169", "object", "solid"), + ("event1169", "subject", "jupiter"), + ("event1169", "type", "membership"), + ("event1170", "object", "solid"), + ("event1170", "subject", "pasiphae"), + ("event1170", "type", "membership"), + ("event1171", "object", "solid"), + ("event1171", "subject", "carme"), + ("event1171", "type", "membership"), + ("event1172", "object", "solid"), + ("event1172", "subject", "thebe"), + ("event1172", "type", "membership"), + ("event1173", "object", "solid"), + ("event1173", "subject", "sinope"), + ("event1173", "type", "membership"), + ("event1174", "object", "solid"), + ("event1174", "subject", "elara"), + ("event1174", "type", "membership"), + ("event1175", "object", "solid"), + ("event1175", "subject", "himalia"), + ("event1175", "type", "membership"), + ("event1176", "object", "solid"), + ("event1176", "subject", "lysithea"), + ("event1176", "type", "membership"), + ("event1177", "object", "solid"), + ("event1177", "subject", "leda"), + ("event1177", "type", "membership"), + ("event1178", "object", "solid"), + ("event1178", "subject", "ananke"), + ("event1178", "type", "membership"), + ("event1179", "object", "solid"), + ("event1179", "subject", "luna"), + ("event1179", "type", "membership"), + ("event1180", "object", "solid"), + ("event1180", "subject", "mars"), + ("event1180", "type", "membership"), + ("event1181", "object", "solid"), + ("event1181", "subject", "mercury"), + ("event1181", "type", "membership"), + ("event1182", "object", "solid"), + ("event1182", "subject", "mimas"), + ("event1182", "type", "membership"), + ("event1183", "object", "solid"), + ("event1183", "subject", "miranda"), + ("event1183", "type", "membership"), + ("event1184", "object", "solid"), + ("event1184", "subject", "neptune"), + ("event1184", "type", "membership"), + ("event1185", "object", "solid"), + ("event1185", "subject", "nereid"), + ("event1185", "type", "membership"), + ("event1186", "object", "solid"), + ("event1186", "subject", "oberon"), + ("event1186", "type", "membership"), + ("event1187", "object", "solid"), + ("event1187", "subject", "phobos"), + ("event1187", "type", "membership"), + ("event1188", "object", "solid"), + ("event1188", "subject", "phoebe"), + ("event1188", "type", "membership"), + ("event1189", "object", "solid"), + ("event1189", "subject", "pluto"), + ("event1189", "type", "membership"), + ("event1190", "object", "solid"), + ("event1190", "subject", "rhea"), + ("event1190", "type", "membership"), + ("event1191", "object", "solid"), + ("event1191", "subject", "saturn"), + ("event1191", "type", "membership"), + ("event1192", "object", "solid"), + ("event1192", "subject", "epimetheus"), + ("event1192", "type", "membership"), + ("event1193", "object", "solid"), + ("event1193", "subject", "tethys"), + ("event1193", "type", "membership"), + ("event1194", "object", "solid"), + ("event1194", "subject", "titan"), + ("event1194", "type", "membership"), + ("event1195", "object", "solid"), + ("event1195", "subject", "titania"), + ("event1195", "type", "membership"), + ("event1196", "object", "solid"), + ("event1196", "subject", "triton"), + ("event1196", "type", "membership"), + ("event1197", "object", "solid"), + ("event1197", "subject", "umbriel"), + ("event1197", "type", "membership"), + ("event1198", "object", "solid"), + ("event1198", "subject", "uranus"), + ("event1198", "type", "membership"), + ("event1199", "object", "solid"), + ("event1199", "subject", "venus"), + ("event1199", "type", "membership"), + ("event1200", "object", "brown"), + ("event1200", "subject", "venus"), + ("event1200", "type", "membership"), + ("event1201", "object", "brown"), + ("event1201", "subject", "mercury"), + ("event1201", "type", "membership"), + ("event1202", "object", "brown"), + ("event1202", "subject", "pluto"), + ("event1202", "type", "membership"), + ("event1203", "object", "brown"), + ("event1203", "subject", "venus"), + ("event1203", "type", "membership"), + ("event1204", "object", "gaseous"), + ("event1204", "subject", "jupiter"), + ("event1204", "type", "membership"), + ("event1205", "object", "gaseous"), + ("event1205", "subject", "neptune"), + ("event1205", "type", "membership"), + ("event1206", "object", "gaseous"), + ("event1206", "subject", "saturn"), + ("event1206", "type", "membership"), + ("event1207", "object", "gaseous"), + ("event1207", "subject", "uranus"), + ("event1207", "type", "membership"), + ("event1208", "object", "green"), + ("event1208", "subject", "earth"), + ("event1208", "type", "membership"), + ("event1209", "object", "green"), + ("event1209", "subject", "neptune"), + ("event1209", "type", "membership"), + ("event1210", "object", "green"), + ("event1210", "subject", "uranus"), + ("event1210", "type", "membership"), + ("event1211", "object", "red"), + ("event1211", "subject", "io"), + ("event1211", "type", "membership"), + ("event1212", "object", "red"), + ("event1212", "subject", "jupiter"), + ("event1212", "type", "membership"), + ("event1213", "object", "red"), + ("event1213", "subject", "mars"), + ("event1213", "type", "membership"), + ("event1214", "object", "red"), + ("event1214", "subject", "saturn"), + ("event1214", "type", "membership"), + ("event1215", "object", "ringed"), + ("event1215", "subject", "jupiter"), + ("event1215", "type", "membership"), + ("event1216", "object", "ringed"), + ("event1216", "subject", "neptune"), + ("event1216", "type", "membership"), + ("event1217", "object", "ringed"), + ("event1217", "subject", "saturn"), + ("event1217", "type", "membership"), + ("event1218", "object", "ringed"), + ("event1218", "subject", "uranus"), + ("event1218", "type", "membership"), + ("event1219", "object", "vacuumous"), + ("event1219", "subject", "venus"), + ("event1219", "type", "membership"), + ("event1220", "object", "vacuumous"), + ("event1220", "subject", "almathea"), + ("event1220", "type", "membership"), + ("event1221", "object", "vacuumous"), + ("event1221", "subject", "ariel"), + ("event1221", "type", "membership"), + ("event1222", "object", "vacuumous"), + ("event1222", "subject", "callisto"), + ("event1222", "type", "membership"), + ("event1223", "object", "vacuumous"), + ("event1223", "subject", "charon"), + ("event1223", "type", "membership"), + ("event1224", "object", "vacuumous"), + ("event1224", "subject", "deimos"), + ("event1224", "type", "membership"), + ("event1225", "object", "vacuumous"), + ("event1225", "subject", "dione"), + ("event1225", "type", "membership"), + ("event1226", "object", "vacuumous"), + ("event1226", "subject", "earth"), + ("event1226", "type", "membership"), + ("event1227", "object", "vacuumous"), + ("event1227", "subject", "enceladus"), + ("event1227", "type", "membership"), + ("event1228", "object", "vacuumous"), + ("event1228", "subject", "europa"), + ("event1228", "type", "membership"), + ("event1229", "object", "vacuumous"), + ("event1229", "subject", "ganymede"), + ("event1229", "type", "membership"), + ("event1230", "object", "vacuumous"), + ("event1230", "subject", "hyperion"), + ("event1230", "type", "membership"), + ("event1231", "object", "vacuumous"), + ("event1231", "subject", "iapetus"), + ("event1231", "type", "membership"), + ("event1232", "object", "vacuumous"), + ("event1232", "subject", "io"), + ("event1232", "type", "membership"), + ("event1233", "object", "vacuumous"), + ("event1233", "subject", "janus"), + ("event1233", "type", "membership"), + ("event1234", "object", "vacuumous"), + ("event1234", "subject", "jupiter"), + ("event1234", "type", "membership"), + ("event1235", "object", "vacuumous"), + ("event1235", "subject", "pasiphae"), + ("event1235", "type", "membership"), + ("event1236", "object", "vacuumous"), + ("event1236", "subject", "carme"), + ("event1236", "type", "membership"), + ("event1237", "object", "vacuumous"), + ("event1237", "subject", "thebe"), + ("event1237", "type", "membership"), + ("event1238", "object", "vacuumous"), + ("event1238", "subject", "sinope"), + ("event1238", "type", "membership"), + ("event1239", "object", "vacuumous"), + ("event1239", "subject", "elara"), + ("event1239", "type", "membership"), + ("event1240", "object", "vacuumous"), + ("event1240", "subject", "himalia"), + ("event1240", "type", "membership"), + ("event1241", "object", "vacuumous"), + ("event1241", "subject", "lysithea"), + ("event1241", "type", "membership"), + ("event1242", "object", "vacuumous"), + ("event1242", "subject", "leda"), + ("event1242", "type", "membership"), + ("event1243", "object", "vacuumous"), + ("event1243", "subject", "ananke"), + ("event1243", "type", "membership"), + ("event1244", "object", "vacuumous"), + ("event1244", "subject", "luna"), + ("event1244", "type", "membership"), + ("event1245", "object", "vacuumous"), + ("event1245", "subject", "mars"), + ("event1245", "type", "membership"), + ("event1246", "object", "vacuumous"), + ("event1246", "subject", "mercury"), + ("event1246", "type", "membership"), + ("event1247", "object", "vacuumous"), + ("event1247", "subject", "mimas"), + ("event1247", "type", "membership"), + ("event1248", "object", "vacuumous"), + ("event1248", "subject", "miranda"), + ("event1248", "type", "membership"), + ("event1249", "object", "vacuumous"), + ("event1249", "subject", "neptune"), + ("event1249", "type", "membership"), + ("event1250", "object", "vacuumous"), + ("event1250", "subject", "nereid"), + ("event1250", "type", "membership"), + ("event1251", "object", "vacuumous"), + ("event1251", "subject", "oberon"), + ("event1251", "type", "membership"), + ("event1252", "object", "vacuumous"), + ("event1252", "subject", "phobos"), + ("event1252", "type", "membership"), + ("event1253", "object", "vacuumous"), + ("event1253", "subject", "phoebe"), + ("event1253", "type", "membership"), + ("event1254", "object", "vacuumous"), + ("event1254", "subject", "pluto"), + ("event1254", "type", "membership"), + ("event1255", "object", "vacuumous"), + ("event1255", "subject", "rhea"), + ("event1255", "type", "membership"), + ("event1256", "object", "vacuumous"), + ("event1256", "subject", "saturn"), + ("event1256", "type", "membership"), + ("event1257", "object", "vacuumous"), + ("event1257", "subject", "epimetheus"), + ("event1257", "type", "membership"), + ("event1258", "object", "vacuumous"), + ("event1258", "subject", "tethys"), + ("event1258", "type", "membership"), + ("event1259", "object", "vacuumous"), + ("event1259", "subject", "titan"), + ("event1259", "type", "membership"), + ("event1260", "object", "vacuumous"), + ("event1260", "subject", "titania"), + ("event1260", "type", "membership"), + ("event1261", "object", "vacuumous"), + ("event1261", "subject", "triton"), + ("event1261", "type", "membership"), + ("event1262", "object", "vacuumous"), + ("event1262", "subject", "umbriel"), + ("event1262", "type", "membership"), + ("event1263", "object", "vacuumous"), + ("event1263", "subject", "uranus"), + ("event1263", "type", "membership"), + ("event1264", "object", "thing"), + ("event1264", "subject", "bernard"), + ("event1264", "type", "membership"), + ("event1265", "object", "thing"), + ("event1265", "subject", "bond"), + ("event1265", "type", "membership"), + ("event1266", "object", "thing"), + ("event1266", "subject", "venus"), + ("event1266", "type", "membership"), + ("event1267", "object", "thing"), + ("event1267", "subject", "cassini"), + ("event1267", "type", "membership"), + ("event1268", "object", "thing"), + ("event1268", "subject", "dollfus"), + ("event1268", "type", "membership"), + ("event1269", "object", "thing"), + ("event1269", "subject", "fountain"), + ("event1269", "type", "membership"), + ("event1270", "object", "thing"), + ("event1270", "subject", "galileo"), + ("event1270", "type", "membership"), + ("event1271", "object", "thing"), + ("event1271", "subject", "hall"), + ("event1271", "type", "membership"), + ("event1272", "object", "thing"), + ("event1272", "subject", "herschel"), + ("event1272", "type", "membership"), + ("event1273", "object", "thing"), + ("event1273", "subject", "huygens"), + ("event1273", "type", "membership"), + ("event1274", "object", "thing"), + ("event1274", "subject", "kowal"), + ("event1274", "type", "membership"), + ("event1275", "object", "thing"), + ("event1275", "subject", "kuiper"), + ("event1275", "type", "membership"), + ("event1276", "object", "thing"), + ("event1276", "subject", "larson"), + ("event1276", "type", "membership"), + ("event1277", "object", "thing"), + ("event1277", "subject", "lassell"), + ("event1277", "type", "membership"), + ("event1278", "object", "thing"), + ("event1278", "subject", "melotte"), + ("event1278", "type", "membership"), + ("event1279", "object", "thing"), + ("event1279", "subject", "nicholson"), + ("event1279", "type", "membership"), + ("event1280", "object", "thing"), + ("event1280", "subject", "perrine"), + ("event1280", "type", "membership"), + ("event1281", "object", "thing"), + ("event1281", "subject", "pickering"), + ("event1281", "type", "membership"), + ("event1282", "object", "thing"), + ("event1282", "subject", "almathea"), + ("event1282", "type", "membership"), + ("event1283", "object", "thing"), + ("event1283", "subject", "ariel"), + ("event1283", "type", "membership"), + ("event1284", "object", "thing"), + ("event1284", "subject", "callisto"), + ("event1284", "type", "membership"), + ("event1285", "object", "thing"), + ("event1285", "subject", "charon"), + ("event1285", "type", "membership"), + ("event1286", "object", "thing"), + ("event1286", "subject", "deimos"), + ("event1286", "type", "membership"), + ("event1287", "object", "thing"), + ("event1287", "subject", "dione"), + ("event1287", "type", "membership"), + ("event1288", "object", "thing"), + ("event1288", "subject", "earth"), + ("event1288", "type", "membership"), + ("event1289", "object", "thing"), + ("event1289", "subject", "enceladus"), + ("event1289", "type", "membership"), + ("event1290", "object", "thing"), + ("event1290", "subject", "europa"), + ("event1290", "type", "membership"), + ("event1291", "object", "thing"), + ("event1291", "subject", "ganymede"), + ("event1291", "type", "membership"), + ("event1292", "object", "thing"), + ("event1292", "subject", "hyperion"), + ("event1292", "type", "membership"), + ("event1293", "object", "thing"), + ("event1293", "subject", "iapetus"), + ("event1293", "type", "membership"), + ("event1294", "object", "thing"), + ("event1294", "subject", "io"), + ("event1294", "type", "membership"), + ("event1295", "object", "thing"), + ("event1295", "subject", "janus"), + ("event1295", "type", "membership"), + ("event1296", "object", "thing"), + ("event1296", "subject", "jupiter"), + ("event1296", "type", "membership"), + ("event1297", "object", "thing"), + ("event1297", "subject", "pasiphae"), + ("event1297", "type", "membership"), + ("event1298", "object", "thing"), + ("event1298", "subject", "carme"), + ("event1298", "type", "membership"), + ("event1299", "object", "thing"), + ("event1299", "subject", "thebe"), + ("event1299", "type", "membership"), + ("event1300", "object", "thing"), + ("event1300", "subject", "sinope"), + ("event1300", "type", "membership"), + ("event1301", "object", "thing"), + ("event1301", "subject", "elara"), + ("event1301", "type", "membership"), + ("event1302", "object", "thing"), + ("event1302", "subject", "himalia"), + ("event1302", "type", "membership"), + ("event1303", "object", "thing"), + ("event1303", "subject", "lysithea"), + ("event1303", "type", "membership"), + ("event1304", "object", "thing"), + ("event1304", "subject", "leda"), + ("event1304", "type", "membership"), + ("event1305", "object", "thing"), + ("event1305", "subject", "ananke"), + ("event1305", "type", "membership"), + ("event1306", "object", "thing"), + ("event1306", "subject", "luna"), + ("event1306", "type", "membership"), + ("event1307", "object", "thing"), + ("event1307", "subject", "mars"), + ("event1307", "type", "membership"), + ("event1308", "object", "thing"), + ("event1308", "subject", "mercury"), + ("event1308", "type", "membership"), + ("event1309", "object", "thing"), + ("event1309", "subject", "mimas"), + ("event1309", "type", "membership"), + ("event1310", "object", "thing"), + ("event1310", "subject", "miranda"), + ("event1310", "type", "membership"), + ("event1311", "object", "thing"), + ("event1311", "subject", "neptune"), + ("event1311", "type", "membership"), + ("event1312", "object", "thing"), + ("event1312", "subject", "nereid"), + ("event1312", "type", "membership"), + ("event1313", "object", "thing"), + ("event1313", "subject", "oberon"), + ("event1313", "type", "membership"), + ("event1314", "object", "thing"), + ("event1314", "subject", "phobos"), + ("event1314", "type", "membership"), + ("event1315", "object", "thing"), + ("event1315", "subject", "phoebe"), + ("event1315", "type", "membership"), + ("event1316", "object", "thing"), + ("event1316", "subject", "pluto"), + ("event1316", "type", "membership"), + ("event1317", "object", "thing"), + ("event1317", "subject", "rhea"), + ("event1317", "type", "membership"), + ("event1318", "object", "thing"), + ("event1318", "subject", "saturn"), + ("event1318", "type", "membership"), + ("event1319", "object", "thing"), + ("event1319", "subject", "epimetheus"), + ("event1319", "type", "membership"), + ("event1320", "object", "thing"), + ("event1320", "subject", "sol"), + ("event1320", "type", "membership"), + ("event1321", "object", "thing"), + ("event1321", "subject", "tethys"), + ("event1321", "type", "membership"), + ("event1322", "object", "thing"), + ("event1322", "subject", "titan"), + ("event1322", "type", "membership"), + ("event1323", "object", "thing"), + ("event1323", "subject", "titania"), + ("event1323", "type", "membership"), + ("event1324", "object", "thing"), + ("event1324", "subject", "triton"), + ("event1324", "type", "membership"), + ("event1325", "object", "thing"), + ("event1325", "subject", "umbriel"), + ("event1325", "type", "membership"), + ("event1326", "object", "thing"), + ("event1326", "subject", "uranus"), + ("event1326", "type", "membership"), + ("event1327", "object", "spin"), + ("event1327", "subject", "venus"), + ("event1327", "type", "membership"), + ("event1328", "object", "spin"), + ("event1328", "subject", "almathea"), + ("event1328", "type", "membership"), + ("event1329", "object", "spin"), + ("event1329", "subject", "ariel"), + ("event1329", "type", "membership"), + ("event1330", "object", "spin"), + ("event1330", "subject", "callisto"), + ("event1330", "type", "membership"), + ("event1331", "object", "spin"), + ("event1331", "subject", "charon"), + ("event1331", "type", "membership"), + ("event1332", "object", "spin"), + ("event1332", "subject", "deimos"), + ("event1332", "type", "membership"), + ("event1333", "object", "spin"), + ("event1333", "subject", "dione"), + ("event1333", "type", "membership"), + ("event1334", "object", "spin"), + ("event1334", "subject", "earth"), + ("event1334", "type", "membership"), + ("event1335", "object", "spin"), + ("event1335", "subject", "enceladus"), + ("event1335", "type", "membership"), + ("event1336", "object", "spin"), + ("event1336", "subject", "europa"), + ("event1336", "type", "membership"), + ("event1337", "object", "spin"), + ("event1337", "subject", "ganymede"), + ("event1337", "type", "membership"), + ("event1338", "object", "spin"), + ("event1338", "subject", "hyperion"), + ("event1338", "type", "membership"), + ("event1339", "object", "spin"), + ("event1339", "subject", "iapetus"), + ("event1339", "type", "membership"), + ("event1340", "object", "spin"), + ("event1340", "subject", "io"), + ("event1340", "type", "membership"), + ("event1341", "object", "spin"), + ("event1341", "subject", "janus"), + ("event1341", "type", "membership"), + ("event1342", "object", "spin"), + ("event1342", "subject", "jupiter"), + ("event1342", "type", "membership"), + ("event1343", "object", "spin"), + ("event1343", "subject", "pasiphae"), + ("event1343", "type", "membership"), + ("event1344", "object", "spin"), + ("event1344", "subject", "carme"), + ("event1344", "type", "membership"), + ("event1345", "object", "spin"), + ("event1345", "subject", "thebe"), + ("event1345", "type", "membership"), + ("event1346", "object", "spin"), + ("event1346", "subject", "sinope"), + ("event1346", "type", "membership"), + ("event1347", "object", "spin"), + ("event1347", "subject", "elara"), + ("event1347", "type", "membership"), + ("event1348", "object", "spin"), + ("event1348", "subject", "himalia"), + ("event1348", "type", "membership"), + ("event1349", "object", "spin"), + ("event1349", "subject", "lysithea"), + ("event1349", "type", "membership"), + ("event1350", "object", "spin"), + ("event1350", "subject", "leda"), + ("event1350", "type", "membership"), + ("event1351", "object", "spin"), + ("event1351", "subject", "ananke"), + ("event1351", "type", "membership"), + ("event1352", "object", "spin"), + ("event1352", "subject", "luna"), + ("event1352", "type", "membership"), + ("event1353", "object", "spin"), + ("event1353", "subject", "mars"), + ("event1353", "type", "membership"), + ("event1354", "object", "spin"), + ("event1354", "subject", "mercury"), + ("event1354", "type", "membership"), + ("event1355", "object", "spin"), + ("event1355", "subject", "mimas"), + ("event1355", "type", "membership"), + ("event1356", "object", "spin"), + ("event1356", "subject", "miranda"), + ("event1356", "type", "membership"), + ("event1357", "object", "spin"), + ("event1357", "subject", "neptune"), + ("event1357", "type", "membership"), + ("event1358", "object", "spin"), + ("event1358", "subject", "nereid"), + ("event1358", "type", "membership"), + ("event1359", "object", "spin"), + ("event1359", "subject", "oberon"), + ("event1359", "type", "membership"), + ("event1360", "object", "spin"), + ("event1360", "subject", "phobos"), + ("event1360", "type", "membership"), + ("event1361", "object", "spin"), + ("event1361", "subject", "phoebe"), + ("event1361", "type", "membership"), + ("event1362", "object", "spin"), + ("event1362", "subject", "pluto"), + ("event1362", "type", "membership"), + ("event1363", "object", "spin"), + ("event1363", "subject", "rhea"), + ("event1363", "type", "membership"), + ("event1364", "object", "spin"), + ("event1364", "subject", "saturn"), + ("event1364", "type", "membership"), + ("event1365", "object", "spin"), + ("event1365", "subject", "epimetheus"), + ("event1365", "type", "membership"), + ("event1366", "object", "spin"), + ("event1366", "subject", "sol"), + ("event1366", "type", "membership"), + ("event1367", "object", "spin"), + ("event1367", "subject", "tethys"), + ("event1367", "type", "membership"), + ("event1368", "object", "spin"), + ("event1368", "subject", "titan"), + ("event1368", "type", "membership"), + ("event1369", "object", "spin"), + ("event1369", "subject", "titania"), + ("event1369", "type", "membership"), + ("event1370", "object", "spin"), + ("event1370", "subject", "triton"), + ("event1370", "type", "membership"), + ("event1371", "object", "spin"), + ("event1371", "subject", "umbriel"), + ("event1371", "type", "membership"), + ("event1372", "object", "spin"), + ("event1372", "subject", "uranus"), + ("event1372", "type", "membership"), + ("event1373", "object", "jupiter"), + ("event1373", "subject", "adrastea"), + ("event1373", "type", "orbit_ev"), + ("event1374", "object", "jupiter"), + ("event1374", "subject", "metis"), + ("event1374", "type", "orbit_ev"), + ("event1375", "object", "jupiter"), + ("event1375", "subject", "callirrhoe"), + ("event1375", "type", "orbit_ev"), + ("event1376", "object", "jupiter"), + ("event1376", "subject", "themisto"), + ("event1376", "type", "orbit_ev"), + ("event1377", "object", "jupiter"), + ("event1377", "subject", "megaclite"), + ("event1377", "type", "orbit_ev"), + ("event1378", "object", "jupiter"), + ("event1378", "subject", "taygete"), + ("event1378", "type", "orbit_ev"), + ("event1379", "object", "jupiter"), + ("event1379", "subject", "chaldene"), + ("event1379", "type", "orbit_ev"), + ("event1380", "object", "jupiter"), + ("event1380", "subject", "harpalyke"), + ("event1380", "type", "orbit_ev"), + ("event1381", "object", "jupiter"), + ("event1381", "subject", "kalyke"), + ("event1381", "type", "orbit_ev"), + ("event1382", "object", "jupiter"), + ("event1382", "subject", "iocaste"), + ("event1382", "type", "orbit_ev"), + ("event1383", "object", "jupiter"), + ("event1383", "subject", "erinome"), + ("event1383", "type", "orbit_ev"), + ("event1384", "object", "jupiter"), + ("event1384", "subject", "isonoe"), + ("event1384", "type", "orbit_ev"), + ("event1385", "object", "jupiter"), + ("event1385", "subject", "praxidike"), + ("event1385", "type", "orbit_ev"), + ("event1386", "object", "jupiter"), + ("event1386", "subject", "autonoe"), + ("event1386", "type", "orbit_ev"), + ("event1387", "object", "jupiter"), + ("event1387", "subject", "thyone"), + ("event1387", "type", "orbit_ev"), + ("event1388", "object", "jupiter"), + ("event1388", "subject", "hermippe"), + ("event1388", "type", "orbit_ev"), + ("event1389", "object", "jupiter"), + ("event1389", "subject", "aitne"), + ("event1389", "type", "orbit_ev"), + ("event1390", "object", "jupiter"), + ("event1390", "subject", "eurydome"), + ("event1390", "type", "orbit_ev"), + ("event1391", "object", "jupiter"), + ("event1391", "subject", "euanthe"), + ("event1391", "type", "orbit_ev"), + ("event1392", "object", "jupiter"), + ("event1392", "subject", "euporie"), + ("event1392", "type", "orbit_ev"), + ("event1393", "object", "jupiter"), + ("event1393", "subject", "orthosie"), + ("event1393", "type", "orbit_ev"), + ("event1394", "object", "jupiter"), + ("event1394", "subject", "sponde"), + ("event1394", "type", "orbit_ev"), + ("event1395", "object", "jupiter"), + ("event1395", "subject", "kale"), + ("event1395", "type", "orbit_ev"), + ("event1396", "object", "jupiter"), + ("event1396", "subject", "pasithee"), + ("event1396", "type", "orbit_ev"), + ("event1397", "object", "jupiter"), + ("event1397", "subject", "hegemone"), + ("event1397", "type", "orbit_ev"), + ("event1398", "object", "jupiter"), + ("event1398", "subject", "mneme"), + ("event1398", "type", "orbit_ev"), + ("event1399", "object", "jupiter"), + ("event1399", "subject", "aoede"), + ("event1399", "type", "orbit_ev"), + ("event1400", "object", "jupiter"), + ("event1400", "subject", "thelxinoe"), + ("event1400", "type", "orbit_ev"), + ("event1401", "object", "jupiter"), + ("event1401", "subject", "arche"), + ("event1401", "type", "orbit_ev"), + ("event1402", "object", "jupiter"), + ("event1402", "subject", "kallichore"), + ("event1402", "type", "orbit_ev"), + ("event1403", "object", "jupiter"), + ("event1403", "subject", "helike"), + ("event1403", "type", "orbit_ev"), + ("event1404", "object", "jupiter"), + ("event1404", "subject", "carpo"), + ("event1404", "type", "orbit_ev"), + ("event1405", "object", "jupiter"), + ("event1405", "subject", "eukelade"), + ("event1405", "type", "orbit_ev"), + ("event1406", "object", "jupiter"), + ("event1406", "subject", "cyllene"), + ("event1406", "type", "orbit_ev"), + ("event1407", "object", "jupiter"), + ("event1407", "subject", "kore"), + ("event1407", "type", "orbit_ev"), + ("event1408", "object", "jupiter"), + ("event1408", "subject", "herse"), + ("event1408", "type", "orbit_ev"), + ("event1409", "object", "saturn"), + ("event1409", "subject", "helene"), + ("event1409", "type", "orbit_ev"), + ("event1410", "object", "saturn"), + ("event1410", "subject", "telesto"), + ("event1410", "type", "orbit_ev"), + ("event1411", "object", "saturn"), + ("event1411", "subject", "calypso"), + ("event1411", "type", "orbit_ev"), + ("event1412", "object", "saturn"), + ("event1412", "subject", "atlas"), + ("event1412", "type", "orbit_ev"), + ("event1413", "object", "saturn"), + ("event1413", "subject", "prometheus"), + ("event1413", "type", "orbit_ev"), + ("event1414", "object", "saturn"), + ("event1414", "subject", "pandora"), + ("event1414", "type", "orbit_ev"), + ("event1415", "object", "saturn"), + ("event1415", "subject", "pan"), + ("event1415", "type", "orbit_ev"), + ("event1416", "object", "saturn"), + ("event1416", "subject", "ymir"), + ("event1416", "type", "orbit_ev"), + ("event1417", "object", "saturn"), + ("event1417", "subject", "paaliaq"), + ("event1417", "type", "orbit_ev"), + ("event1418", "object", "saturn"), + ("event1418", "subject", "tarvos"), + ("event1418", "type", "orbit_ev"), + ("event1419", "object", "saturn"), + ("event1419", "subject", "ijiraq"), + ("event1419", "type", "orbit_ev"), + ("event1420", "object", "saturn"), + ("event1420", "subject", "suttungr"), + ("event1420", "type", "orbit_ev"), + ("event1421", "object", "saturn"), + ("event1421", "subject", "kiviuq"), + ("event1421", "type", "orbit_ev"), + ("event1422", "object", "saturn"), + ("event1422", "subject", "mundilfari"), + ("event1422", "type", "orbit_ev"), + ("event1423", "object", "saturn"), + ("event1423", "subject", "albiorix"), + ("event1423", "type", "orbit_ev"), + ("event1424", "object", "saturn"), + ("event1424", "subject", "skathi"), + ("event1424", "type", "orbit_ev"), + ("event1425", "object", "saturn"), + ("event1425", "subject", "erriapus"), + ("event1425", "type", "orbit_ev"), + ("event1426", "object", "saturn"), + ("event1426", "subject", "siarnaq"), + ("event1426", "type", "orbit_ev"), + ("event1427", "object", "saturn"), + ("event1427", "subject", "thrymr"), + ("event1427", "type", "orbit_ev"), + ("event1428", "object", "saturn"), + ("event1428", "subject", "narvi"), + ("event1428", "type", "orbit_ev"), + ("event1429", "object", "saturn"), + ("event1429", "subject", "methone"), + ("event1429", "type", "orbit_ev"), + ("event1430", "object", "saturn"), + ("event1430", "subject", "pallene"), + ("event1430", "type", "orbit_ev"), + ("event1431", "object", "saturn"), + ("event1431", "subject", "polydeuces"), + ("event1431", "type", "orbit_ev"), + ("event1432", "object", "saturn"), + ("event1432", "subject", "daphnis"), + ("event1432", "type", "orbit_ev"), + ("event1433", "object", "saturn"), + ("event1433", "subject", "aegir"), + ("event1433", "type", "orbit_ev"), + ("event1434", "object", "saturn"), + ("event1434", "subject", "bebhionn"), + ("event1434", "type", "orbit_ev"), + ("event1435", "object", "saturn"), + ("event1435", "subject", "bergelmir"), + ("event1435", "type", "orbit_ev"), + ("event1436", "object", "saturn"), + ("event1436", "subject", "bestla"), + ("event1436", "type", "orbit_ev"), + ("event1437", "object", "saturn"), + ("event1437", "subject", "farbauti"), + ("event1437", "type", "orbit_ev"), + ("event1438", "object", "saturn"), + ("event1438", "subject", "fenrir"), + ("event1438", "type", "orbit_ev"), + ("event1439", "object", "saturn"), + ("event1439", "subject", "fornjot"), + ("event1439", "type", "orbit_ev"), + ("event1440", "object", "saturn"), + ("event1440", "subject", "hati"), + ("event1440", "type", "orbit_ev"), + ("event1441", "object", "saturn"), + ("event1441", "subject", "hyrrokkin"), + ("event1441", "type", "orbit_ev"), + ("event1442", "object", "saturn"), + ("event1442", "subject", "kari"), + ("event1442", "type", "orbit_ev"), + ("event1443", "object", "saturn"), + ("event1443", "subject", "loge"), + ("event1443", "type", "orbit_ev"), + ("event1444", "object", "saturn"), + ("event1444", "subject", "skoll"), + ("event1444", "type", "orbit_ev"), + ("event1445", "object", "saturn"), + ("event1445", "subject", "surtur"), + ("event1445", "type", "orbit_ev"), + ("event1446", "object", "saturn"), + ("event1446", "subject", "anthe"), + ("event1446", "type", "orbit_ev"), + ("event1447", "object", "saturn"), + ("event1447", "subject", "jarnsaxa"), + ("event1447", "type", "orbit_ev"), + ("event1448", "object", "saturn"), + ("event1448", "object", "thing"), + ("event1448", "subject", "greip"), + ("event1448", "type", "membership"), + ("event1448", "type", "orbit_ev"), + ("event1449", "object", "saturn"), + ("event1449", "subject", "tarqeq"), + ("event1449", "type", "orbit_ev"), + ("event1450", "object", "saturn"), + ("event1450", "subject", "aegaeon"), + ("event1450", "type", "orbit_ev"), + ("event1451", "object", "uranus"), + ("event1451", "subject", "cordelia"), + ("event1451", "type", "orbit_ev"), + ("event1452", "object", "uranus"), + ("event1452", "subject", "ophelia"), + ("event1452", "type", "orbit_ev"), + ("event1453", "object", "uranus"), + ("event1453", "subject", "bianca"), + ("event1453", "type", "orbit_ev"), + ("event1454", "object", "uranus"), + ("event1454", "subject", "cressida"), + ("event1454", "type", "orbit_ev"), + ("event1455", "object", "uranus"), + ("event1455", "subject", "desdemona"), + ("event1455", "type", "orbit_ev"), + ("event1456", "object", "uranus"), + ("event1456", "subject", "juliet"), + ("event1456", "type", "orbit_ev"), + ("event1457", "object", "uranus"), + ("event1457", "subject", "portia"), + ("event1457", "type", "orbit_ev"), + ("event1458", "object", "uranus"), + ("event1458", "subject", "rosalind"), + ("event1458", "type", "orbit_ev"), + ("event1459", "object", "uranus"), + ("event1459", "subject", "belinda"), + ("event1459", "type", "orbit_ev"), + ("event1460", "object", "uranus"), + ("event1460", "subject", "puck"), + ("event1460", "type", "orbit_ev"), + ("event1461", "object", "uranus"), + ("event1461", "subject", "caliban"), + ("event1461", "type", "orbit_ev"), + ("event1462", "object", "uranus"), + ("event1462", "subject", "sycorax"), + ("event1462", "type", "orbit_ev"), + ("event1463", "object", "uranus"), + ("event1463", "subject", "prospero"), + ("event1463", "type", "orbit_ev"), + ("event1464", "object", "uranus"), + ("event1464", "subject", "setebos"), + ("event1464", "type", "orbit_ev"), + ("event1465", "object", "uranus"), + ("event1465", "subject", "stephano"), + ("event1465", "type", "orbit_ev"), + ("event1466", "object", "uranus"), + ("event1466", "subject", "trinculo"), + ("event1466", "type", "orbit_ev"), + ("event1467", "object", "uranus"), + ("event1467", "subject", "francisco"), + ("event1467", "type", "orbit_ev"), + ("event1468", "object", "uranus"), + ("event1468", "subject", "margaret"), + ("event1468", "type", "orbit_ev"), + ("event1469", "object", "uranus"), + ("event1469", "subject", "ferdinand"), + ("event1469", "type", "orbit_ev"), + ("event1470", "object", "uranus"), + ("event1470", "subject", "perdita"), + ("event1470", "type", "orbit_ev"), + ("event1471", "object", "uranus"), + ("event1471", "subject", "mab"), + ("event1471", "type", "orbit_ev"), + ("event1472", "object", "uranus"), + ("event1472", "subject", "cupid"), + ("event1472", "type", "orbit_ev"), + ("event1474", "object", "neptune"), + ("event1474", "subject", "naiad"), + ("event1474", "type", "orbit_ev"), + ("event1475", "object", "neptune"), + ("event1475", "subject", "thalassa"), + ("event1475", "type", "orbit_ev"), + ("event1476", "object", "neptune"), + ("event1476", "subject", "despina"), + ("event1476", "type", "orbit_ev"), + ("event1477", "object", "neptune"), + ("event1477", "subject", "galatea"), + ("event1477", "type", "orbit_ev"), + ("event1478", "object", "neptune"), + ("event1478", "subject", "larissa"), + ("event1478", "type", "orbit_ev"), + ("event1479", "object", "neptune"), + ("event1479", "subject", "proteus"), + ("event1479", "type", "orbit_ev"), + ("event1480", "object", "neptune"), + ("event1480", "subject", "halimede"), + ("event1480", "type", "orbit_ev"), + ("event1481", "object", "neptune"), + ("event1481", "subject", "psamathe"), + ("event1481", "type", "orbit_ev"), + ("event1482", "object", "neptune"), + ("event1482", "subject", "sao"), + ("event1482", "type", "orbit_ev"), + ("event1483", "object", "neptune"), + ("event1483", "subject", "laomedeia"), + ("event1483", "type", "orbit_ev"), + ("event1484", "object", "neptune"), + ("event1484", "subject", "neso"), + ("event1484", "type", "orbit_ev"), + ("event1485", "object", "pluto"), + ("event1485", "subject", "nix"), + ("event1485", "type", "orbit_ev"), + ("event1486", "object", "pluto"), + ("event1486", "subject", "hydra"), + ("event1486", "type", "orbit_ev"), + ("event1487", "object", "pluto"), + ("event1487", "subject", "kerberos"), + ("event1487", "type", "orbit_ev"), + ("event1488", "object", "pluto"), + ("event1488", "subject", "styx"), + ("event1488", "type", "orbit_ev"), + ("event1489", "object", "adrastea"), + ("event1489", "subject", "voyager_science_team"), + ("event1489", "type", "discover_ev"), + ("event1489", "with_implement", "voyager_2"), + ("event1489", "year", "1979"), + ("event1490", "object", "metis"), + ("event1490", "subject", "voyager_science_team"), + ("event1490", "type", "discover_ev"), + ("event1490", "with_implement", "voyager_1"), + ("event1490", "year", "1979"), + ("event1491", "location", "kitt_peak"), + ("event1491", "object", "callirrhoe"), + ("event1491", "subject", "science_team_1"), + ("event1491", "type", "discover_ev"), + ("event1491", "with_implement", "refractor_telescope_3"), + ("event1491", "year", "1999"), + ("event1492", "location", "mauna_kea"), + ("event1492", "object", "themisto"), + ("event1492", "subject", "science_team_2"), + ("event1492", "type", "discover_ev"), + ("event1492", "with_implement", "canada-france-hawaii_telescope"), + ("event1492", "with_implement", "subaru_reflector_telescope"), + ("event1492", "year", "1975"), + ("event1493", "location", "mauna_kea"), + ("event1493", "object", "megaclite"), + ("event1493", "subject", "science_team_3"), + ("event1493", "type", "discover_ev"), + ("event1493", "year", "2000"), + ("event1494", "location", "mauna_kea"), + ("event1494", "object", "taygete"), + ("event1494", "subject", "science_team_3"), + ("event1494", "type", "discover_ev"), + ("event1494", "year", "2000"), + ("event1495", "location", "mauna_kea"), + ("event1495", "object", "chaldene"), + ("event1495", "subject", "science_team_3"), + ("event1495", "type", "discover_ev"), + ("event1495", "year", "2000"), + ("event1496", "location", "mauna_kea"), + ("event1496", "object", "harpalyke"), + ("event1496", "subject", "science_team_3"), + ("event1496", "type", "discover_ev"), + ("event1496", "year", "2000"), + ("event1497", "location", "mauna_kea"), + ("event1497", "object", "kalyke"), + ("event1497", "subject", "science_team_3"), + ("event1497", "type", "discover_ev"), + ("event1497", "year", "2000"), + ("event1498", "location", "mauna_kea"), + ("event1498", "object", "iocaste"), + ("event1498", "subject", "science_team_3"), + ("event1498", "type", "discover_ev"), + ("event1498", "year", "2000"), + ("event1499", "location", "mauna_kea"), + ("event1499", "object", "erinome"), + ("event1499", "subject", "science_team_3"), + ("event1499", "type", "discover_ev"), + ("event1499", "year", "2000"), + ("event1500", "location", "mauna_kea"), + ("event1500", "object", "isonoe"), + ("event1500", "subject", "science_team_3"), + ("event1500", "type", "discover_ev"), + ("event1500", "year", "2000"), + ("event1501", "location", "mauna_kea"), + ("event1501", "object", "praxidike"), + ("event1501", "subject", "science_team_3"), + ("event1501", "type", "discover_ev"), + ("event1501", "year", "2000"), + ("event1502", "location", "mauna_kea"), + ("event1502", "object", "autonoe"), + ("event1502", "subject", "science_team_4"), + ("event1502", "type", "discover_ev"), + ("event1502", "year", "2001"), + ("event1503", "location", "mauna_kea"), + ("event1503", "object", "thyone"), + ("event1503", "subject", "science_team_4"), + ("event1503", "type", "discover_ev"), + ("event1503", "year", "2001"), + ("event1504", "location", "mauna_kea"), + ("event1504", "object", "hermippe"), + ("event1504", "subject", "science_team_4"), + ("event1504", "type", "discover_ev"), + ("event1504", "year", "2001"), + ("event1505", "location", "mauna_kea"), + ("event1505", "object", "aitne"), + ("event1505", "subject", "science_team_4"), + ("event1505", "type", "discover_ev"), + ("event1505", "year", "2001"), + ("event1506", "location", "mauna_kea"), + ("event1506", "object", "eurydome"), + ("event1506", "subject", "science_team_4"), + ("event1506", "type", "discover_ev"), + ("event1506", "year", "2001"), + ("event1507", "location", "mauna_kea"), + ("event1507", "object", "euanthe"), + ("event1507", "subject", "science_team_4"), + ("event1507", "type", "discover_ev"), + ("event1507", "year", "2001"), + ("event1508", "location", "mauna_kea"), + ("event1508", "object", "euporie"), + ("event1508", "subject", "science_team_4"), + ("event1508", "type", "discover_ev"), + ("event1508", "year", "2001"), + ("event1509", "location", "mauna_kea"), + ("event1509", "object", "orthosie"), + ("event1509", "subject", "science_team_4"), + ("event1509", "type", "discover_ev"), + ("event1509", "year", "2001"), + ("event1510", "location", "mauna_kea"), + ("event1510", "object", "sponde"), + ("event1510", "subject", "science_team_4"), + ("event1510", "type", "discover_ev"), + ("event1510", "year", "2001"), + ("event1511", "location", "mauna_kea"), + ("event1511", "object", "kale"), + ("event1511", "subject", "science_team_4"), + ("event1511", "type", "discover_ev"), + ("event1511", "year", "2001"), + ("event1512", "location", "mauna_kea"), + ("event1512", "object", "pasithee"), + ("event1512", "subject", "science_team_4"), + ("event1512", "type", "discover_ev"), + ("event1512", "year", "2001"), + ("event1513", "location", "mauna_kea"), + ("event1513", "object", "hegemone"), + ("event1513", "subject", "sheppard"), + ("event1513", "type", "discover_ev"), + ("event1513", "year", "2003"), + ("event1514", "location", "mauna_kea"), + ("event1514", "object", "mneme"), + ("event1514", "subject", "science_team_5"), + ("event1514", "type", "discover_ev"), + ("event1514", "year", "2003"), + ("event1515", "location", "mauna_kea"), + ("event1515", "object", "aoede"), + ("event1515", "subject", "sheppard"), + ("event1515", "type", "discover_ev"), + ("event1515", "year", "2003"), + ("event1516", "location", "mauna_kea"), + ("event1516", "object", "thelxinoe"), + ("event1516", "subject", "sheppard"), + ("event1516", "type", "discover_ev"), + ("event1516", "year", "2003"), + ("event1517", "location", "mauna_kea"), + ("event1517", "object", "arche"), + ("event1517", "subject", "sheppard"), + ("event1517", "type", "discover_ev"), + ("event1517", "year", "2002"), + ("event1518", "location", "mauna_kea"), + ("event1518", "object", "kallichore"), + ("event1518", "subject", "sheppard"), + ("event1518", "type", "discover_ev"), + ("event1518", "year", "2003"), + ("event1519", "location", "mauna_kea"), + ("event1519", "object", "helike"), + ("event1519", "subject", "sheppard"), + ("event1519", "type", "discover_ev"), + ("event1519", "year", "2003"), + ("event1520", "location", "mauna_kea"), + ("event1520", "object", "carpo"), + ("event1520", "subject", "sheppard"), + ("event1520", "type", "discover_ev"), + ("event1520", "year", "2003"), + ("event1521", "location", "mauna_kea"), + ("event1521", "object", "eukelade"), + ("event1521", "subject", "sheppard"), + ("event1521", "type", "discover_ev"), + ("event1521", "year", "2003"), + ("event1522", "location", "mauna_kea"), + ("event1522", "object", "cyllene"), + ("event1522", "subject", "sheppard"), + ("event1522", "type", "discover_ev"), + ("event1522", "year", "2003"), + ("event1523", "location", "mauna_kea"), + ("event1523", "object", "kore"), + ("event1523", "subject", "science_team_4"), + ("event1523", "type", "discover_ev"), + ("event1523", "year", "2003"), + ("event1524", "location", "mauna_kea"), + ("event1524", "object", "herse"), + ("event1524", "subject", "science_team_6"), + ("event1524", "type", "discover_ev"), + ("event1524", "year", "2003"), + ("event1525", "location", "pic_du_midi"), + ("event1525", "object", "helene"), + ("event1525", "subject", "science_team_8"), + ("event1525", "type", "discover_ev"), + ("event1525", "year", "1980"), + ("event1526", "location", "kitt_peak"), + ("event1526", "object", "telesto"), + ("event1526", "subject", "science_team_9"), + ("event1526", "type", "discover_ev"), + ("event1526", "with_implement", "ground_based_telescope_1"), + ("event1526", "year", "1980"), + ("event1527", "location", "flagstaff"), + ("event1527", "object", "calypso"), + ("event1527", "subject", "science_team_10"), + ("event1527", "type", "discover_ev"), + ("event1527", "with_implement", "ground_based_telescope_2"), + ("event1527", "year", "1980"), + ("event1528", "object", "atlas"), + ("event1528", "subject", "voyager_science_team"), + ("event1528", "type", "discover_ev"), + ("event1528", "with_implement", "voyager_1"), + ("event1528", "year", "1980"), + ("event1529", "object", "prometheus"), + ("event1529", "subject", "voyager_science_team"), + ("event1529", "type", "discover_ev"), + ("event1529", "with_implement", "voyager_1"), + ("event1529", "year", "1980"), + ("event1530", "object", "pandora"), + ("event1530", "subject", "voyager_science_team"), + ("event1530", "type", "discover_ev"), + ("event1530", "with_implement", "voyager_1"), + ("event1530", "year", "1980"), + ("event1531", "object", "pan"), + ("event1531", "subject", "showalter"), + ("event1531", "type", "discover_ev"), + ("event1531", "with_implement", "voyager_2"), + ("event1531", "year", "1990"), + ("event1532", "location", "la_silla"), + ("event1532", "object", "ymir"), + ("event1532", "subject", "science_team_11"), + ("event1532", "type", "discover_ev"), + ("event1532", "year", "2000"), + ("event1533", "location", "la_silla"), + ("event1533", "object", "paaliaq"), + ("event1533", "subject", "science_team_11"), + ("event1533", "type", "discover_ev"), + ("event1533", "year", "2000"), + ("event1534", "location", "mauna_kea"), + ("event1534", "object", "tarvos"), + ("event1534", "subject", "science_team_11"), + ("event1534", "type", "discover_ev"), + ("event1534", "with_implement", "canada-france-hawaii_telescope"), + ("event1534", "year", "2000"), + ("event1535", "location", "mauna_kea"), + ("event1535", "object", "ijiraq"), + ("event1535", "subject", "science_team_11"), + ("event1535", "type", "discover_ev"), + ("event1535", "with_implement", "canada-france-hawaii_telescope"), + ("event1535", "year", "2000"), + ("event1536", "location", "mauna_kea"), + ("event1536", "object", "suttungr"), + ("event1536", "subject", "science_team_11"), + ("event1536", "type", "discover_ev"), + ("event1536", "with_implement", "canada-france-hawaii_telescope"), + ("event1536", "year", "2000"), + ("event1537", "location", "la_silla"), + ("event1537", "object", "kiviuq"), + ("event1537", "subject", "science_team_11"), + ("event1537", "type", "discover_ev"), + ("event1537", "year", "2000"), + ("event1538", "location", "mauna_kea"), + ("event1538", "object", "mundilfari"), + ("event1538", "subject", "science_team_11"), + ("event1538", "type", "discover_ev"), + ("event1538", "with_implement", "canada-france-hawaii_telescope"), + ("event1538", "year", "2000"), + ("event1539", "location", "mt_hopkins"), + ("event1539", "object", "albiorix"), + ("event1539", "subject", "holman"), + ("event1539", "type", "discover_ev"), + ("event1539", "with_implement", "reflector_telescope_2"), + ("event1539", "year", "2000"), + ("event1540", "location", "mauna_kea"), + ("event1540", "object", "skathi"), + ("event1540", "subject", "science_team_11"), + ("event1540", "type", "discover_ev"), + ("event1540", "with_implement", "canada-france-hawaii_telescope"), + ("event1540", "year", "2000"), + ("event1541", "location", "mauna_kea"), + ("event1541", "object", "erriapus"), + ("event1541", "subject", "science_team_11"), + ("event1541", "type", "discover_ev"), + ("event1541", "with_implement", "canada-france-hawaii_telescope"), + ("event1541", "year", "2000"), + ("event1542", "location", "mauna_kea"), + ("event1542", "object", "siarnaq"), + ("event1542", "subject", "science_team_11"), + ("event1542", "type", "discover_ev"), + ("event1542", "with_implement", "canada-france-hawaii_telescope"), + ("event1542", "year", "2000"), + ("event1543", "location", "mauna_kea"), + ("event1543", "object", "thrymr"), + ("event1543", "subject", "science_team_11"), + ("event1543", "type", "discover_ev"), + ("event1543", "with_implement", "canada-france-hawaii_telescope"), + ("event1543", "year", "2000"), + ("event1544", "location", "mauna_kea"), + ("event1544", "object", "narvi"), + ("event1544", "subject", "science_team_4"), + ("event1544", "type", "discover_ev"), + ("event1544", "year", "2003"), + ("event1545", "object", "methone"), + ("event1545", "subject", "cassini_imaging_science_team"), + ("event1545", "type", "discover_ev"), + ("event1545", "with_implement", "cassini"), + ("event1545", "year", "2004"), + ("event1546", "object", "pallene"), + ("event1546", "subject", "cassini_imaging_science_team"), + ("event1546", "type", "discover_ev"), + ("event1546", "with_implement", "cassini"), + ("event1546", "year", "2004"), + ("event1547", "object", "polydeuces"), + ("event1547", "subject", "cassini_imaging_science_team"), + ("event1547", "type", "discover_ev"), + ("event1547", "with_implement", "cassini"), + ("event1547", "year", "2004"), + ("event1548", "object", "daphnis"), + ("event1548", "subject", "cassini_imaging_science_team"), + ("event1548", "type", "discover_ev"), + ("event1548", "with_implement", "cassini"), + ("event1548", "year", "2005"), + ("event1549", "location", "mauna_kea"), + ("event1549", "object", "aegir"), + ("event1549", "subject", "science_team_4"), + ("event1549", "type", "discover_ev"), + ("event1549", "with_implement", "subaru_reflector_telescope"), + ("event1549", "year", "2004"), + ("event1550", "location", "mauna_kea"), + ("event1550", "object", "bebhionn"), + ("event1550", "subject", "science_team_4"), + ("event1550", "type", "discover_ev"), + ("event1550", "with_implement", "subaru_reflector_telescope"), + ("event1550", "year", "2004"), + ("event1551", "location", "mauna_kea"), + ("event1551", "object", "bergelmir"), + ("event1551", "subject", "science_team_4"), + ("event1551", "type", "discover_ev"), + ("event1551", "with_implement", "subaru_reflector_telescope"), + ("event1551", "year", "2004"), + ("event1552", "location", "mauna_kea"), + ("event1552", "object", "bestla"), + ("event1552", "subject", "science_team_4"), + ("event1552", "type", "discover_ev"), + ("event1552", "with_implement", "subaru_reflector_telescope"), + ("event1552", "year", "2004"), + ("event1553", "location", "mauna_kea"), + ("event1553", "object", "farbauti"), + ("event1553", "subject", "science_team_4"), + ("event1553", "type", "discover_ev"), + ("event1553", "with_implement", "subaru_reflector_telescope"), + ("event1553", "year", "2004"), + ("event1554", "location", "mauna_kea"), + ("event1554", "object", "fenrir"), + ("event1554", "subject", "science_team_4"), + ("event1554", "type", "discover_ev"), + ("event1554", "with_implement", "subaru_reflector_telescope"), + ("event1554", "year", "2004"), + ("event1555", "location", "mauna_kea"), + ("event1555", "object", "fornjot"), + ("event1555", "subject", "science_team_4"), + ("event1555", "type", "discover_ev"), + ("event1555", "with_implement", "subaru_reflector_telescope"), + ("event1555", "year", "2004"), + ("event1556", "location", "mauna_kea"), + ("event1556", "object", "hati"), + ("event1556", "subject", "science_team_4"), + ("event1556", "type", "discover_ev"), + ("event1556", "with_implement", "subaru_reflector_telescope"), + ("event1556", "year", "2004"), + ("event1557", "location", "mauna_kea"), + ("event1557", "object", "hyrrokkin"), + ("event1557", "subject", "science_team_4"), + ("event1557", "type", "discover_ev"), + ("event1557", "with_implement", "subaru_reflector_telescope"), + ("event1557", "year", "2004"), + ("event1558", "location", "mauna_kea"), + ("event1558", "object", "kari"), + ("event1558", "subject", "science_team_4"), + ("event1558", "type", "discover_ev"), + ("event1558", "with_implement", "subaru_reflector_telescope"), + ("event1558", "year", "2006"), + ("event1559", "location", "mauna_kea"), + ("event1559", "object", "loge"), + ("event1559", "subject", "science_team_4"), + ("event1559", "type", "discover_ev"), + ("event1559", "with_implement", "subaru_reflector_telescope"), + ("event1559", "year", "2006"), + ("event1560", "location", "mauna_kea"), + ("event1560", "object", "skoll"), + ("event1560", "subject", "science_team_4"), + ("event1560", "type", "discover_ev"), + ("event1560", "with_implement", "subaru_reflector_telescope"), + ("event1560", "year", "2006"), + ("event1561", "location", "mauna_kea"), + ("event1561", "object", "surtur"), + ("event1561", "subject", "science_team_4"), + ("event1561", "type", "discover_ev"), + ("event1561", "with_implement", "subaru_reflector_telescope"), + ("event1561", "year", "2006"), + ("event1562", "object", "anthe"), + ("event1562", "subject", "cassini_imaging_science_team"), + ("event1562", "type", "discover_ev"), + ("event1562", "with_implement", "cassini"), + ("event1562", "year", "2007"), + ("event1563", "location", "mauna_kea"), + ("event1563", "object", "jarnsaxa"), + ("event1563", "subject", "science_team_4"), + ("event1563", "type", "discover_ev"), + ("event1563", "with_implement", "subaru_reflector_telescope"), + ("event1563", "year", "2006"), + ("event1564", "location", "mauna_kea"), + ("event1564", "object", "greip"), + ("event1564", "subject", "science_team_4"), + ("event1564", "type", "discover_ev"), + ("event1564", "with_implement", "subaru_reflector_telescope"), + ("event1564", "year", "2006"), + ("event1565", "location", "mauna_kea"), + ("event1565", "object", "tarqeq"), + ("event1565", "subject", "science_team_4"), + ("event1565", "type", "discover_ev"), + ("event1565", "with_implement", "subaru_reflector_telescope"), + ("event1565", "year", "2007"), + ("event1566", "object", "aegaeon"), + ("event1566", "subject", "cassini_imaging_science_team"), + ("event1566", "type", "discover_ev"), + ("event1566", "with_implement", "cassini"), + ("event1566", "year", "2008"), + ("event1567", "object", "cordelia"), + ("event1567", "subject", "voyager_science_team"), + ("event1567", "type", "discover_ev"), + ("event1567", "with_implement", "voyager_2"), + ("event1567", "year", "1986"), + ("event1568", "object", "ophelia"), + ("event1568", "subject", "voyager_science_team"), + ("event1568", "type", "discover_ev"), + ("event1568", "with_implement", "voyager_2"), + ("event1568", "year", "1986"), + ("event1569", "object", "bianca"), + ("event1569", "subject", "voyager_science_team"), + ("event1569", "type", "discover_ev"), + ("event1569", "with_implement", "voyager_2"), + ("event1569", "year", "1986"), + ("event1570", "object", "cressida"), + ("event1570", "subject", "voyager_science_team"), + ("event1570", "type", "discover_ev"), + ("event1570", "with_implement", "voyager_2"), + ("event1570", "year", "1986"), + ("event1571", "object", "desdemona"), + ("event1571", "subject", "voyager_science_team"), + ("event1571", "type", "discover_ev"), + ("event1571", "with_implement", "voyager_2"), + ("event1571", "year", "1986"), + ("event1572", "object", "juliet"), + ("event1572", "subject", "voyager_science_team"), + ("event1572", "type", "discover_ev"), + ("event1572", "with_implement", "voyager_2"), + ("event1572", "year", "1986"), + ("event1573", "object", "portia"), + ("event1573", "subject", "voyager_science_team"), + ("event1573", "type", "discover_ev"), + ("event1573", "with_implement", "voyager_2"), + ("event1573", "year", "1986"), + ("event1574", "object", "rosalind"), + ("event1574", "subject", "voyager_science_team"), + ("event1574", "type", "discover_ev"), + ("event1574", "with_implement", "voyager_2"), + ("event1574", "year", "1986"), + ("event1575", "object", "belinda"), + ("event1575", "subject", "voyager_science_team"), + ("event1575", "type", "discover_ev"), + ("event1575", "with_implement", "voyager_2"), + ("event1575", "year", "1986"), + ("event1576", "object", "puck"), + ("event1576", "subject", "voyager_science_team"), + ("event1576", "type", "discover_ev"), + ("event1576", "with_implement", "voyager_2"), + ("event1576", "year", "1985"), + ("event1577", "location", "mt_palomar"), + ("event1577", "object", "caliban"), + ("event1577", "subject", "science_team_12"), + ("event1577", "type", "discover_ev"), + ("event1577", "with_implement", "hale_telescope"), + ("event1577", "year", "1997"), + ("event1578", "location", "mt_palomar"), + ("event1578", "object", "sycorax"), + ("event1578", "subject", "science_team_12"), + ("event1578", "type", "discover_ev"), + ("event1578", "with_implement", "hale_telescope"), + ("event1578", "year", "1997"), + ("event1579", "location", "mauna_kea"), + ("event1579", "object", "prospero"), + ("event1579", "subject", "science_team_13"), + ("event1579", "type", "discover_ev"), + ("event1579", "with_implement", "canada-france-hawaii_telescope"), + ("event1579", "year", "1999"), + ("event1580", "location", "mauna_kea"), + ("event1580", "object", "setebos"), + ("event1580", "subject", "science_team_13"), + ("event1580", "type", "discover_ev"), + ("event1580", "with_implement", "canada-france-hawaii_telescope"), + ("event1580", "year", "1999"), + ("event1581", "location", "mauna_kea"), + ("event1581", "object", "stephano"), + ("event1581", "subject", "science_team_13"), + ("event1581", "type", "discover_ev"), + ("event1581", "with_implement", "canada-france-hawaii_telescope"), + ("event1581", "year", "1999"), + ("event1582", "location", "cerro_tololo"), + ("event1582", "object", "trinculo"), + ("event1582", "subject", "science_team_14"), + ("event1582", "type", "discover_ev"), + ("event1582", "with_implement", "reflector_telescope_4"), + ("event1582", "year", "2001"), + ("event1583", "location", "cerro_tololo"), + ("event1583", "object", "francisco"), + ("event1583", "subject", "science_team_15"), + ("event1583", "type", "discover_ev"), + ("event1583", "with_implement", "reflector_telescope_4"), + ("event1583", "year", "2001"), + ("event1584", "location", "mauna_kea"), + ("event1584", "object", "margaret"), + ("event1584", "subject", "science_team_16"), + ("event1584", "type", "discover_ev"), + ("event1584", "with_implement", "subaru_reflector_telescope"), + ("event1584", "year", "2003"), + ("event1585", "location", "cerro_tololo"), + ("event1585", "object", "ferdinand"), + ("event1585", "subject", "science_team_15"), + ("event1585", "type", "discover_ev"), + ("event1585", "with_implement", "reflector_telescope_4"), + ("event1585", "year", "2001"), + ("event1586", "object", "perdita"), + ("event1586", "subject", "karkoschka"), + ("event1586", "type", "discover_ev"), + ("event1586", "with_implement", "voyager_2"), + ("event1586", "year", "1986"), + ("event1587", "object", "mab"), + ("event1587", "subject", "science_team_17"), + ("event1587", "type", "discover_ev"), + ("event1587", "with_implement", "hubble_space_telescope"), + ("event1587", "year", "2003"), + ("event1588", "object", "cupid"), + ("event1588", "subject", "science_team_17"), + ("event1588", "type", "discover_ev"), + ("event1588", "with_implement", "hubble_space_telescope"), + ("event1588", "year", "2003"), + ("event1589", "location", "liverpool"), + ("event1589", "object", "triton"), + ("event1589", "subject", "lassell"), + ("event1589", "type", "discover_ev"), + ("event1589", "with_implement", "reflector_telescope_3"), + ("event1589", "year", "1846"), + ("event1590", "object", "naiad"), + ("event1590", "subject", "voyager_science_team"), + ("event1590", "type", "discover_ev"), + ("event1590", "with_implement", "voyager_2"), + ("event1590", "year", "1989"), + ("event1591", "object", "thalassa"), + ("event1591", "subject", "voyager_science_team"), + ("event1591", "type", "discover_ev"), + ("event1591", "with_implement", "voyager_2"), + ("event1591", "year", "1989"), + ("event1592", "object", "despina"), + ("event1592", "subject", "voyager_science_team"), + ("event1592", "type", "discover_ev"), + ("event1592", "with_implement", "voyager_2"), + ("event1592", "year", "1989"), + ("event1593", "object", "galatea"), + ("event1593", "subject", "voyager_science_team"), + ("event1593", "type", "discover_ev"), + ("event1593", "with_implement", "voyager_2"), + ("event1593", "year", "1989"), + ("event1594", "object", "larissa"), + ("event1594", "subject", "voyager_science_team"), + ("event1594", "type", "discover_ev"), + ("event1594", "with_implement", "voyager_2"), + ("event1594", "year", "1989"), + ("event1595", "object", "proteus"), + ("event1595", "subject", "voyager_science_team"), + ("event1595", "type", "discover_ev"), + ("event1595", "with_implement", "voyager_2"), + ("event1595", "year", "1989"), + ("event1596", "location", "cerro_tololo"), + ("event1596", "object", "halimede"), + ("event1596", "subject", "science_team_18"), + ("event1596", "type", "discover_ev"), + ("event1596", "with_implement", "blanco_telescope"), + ("event1596", "with_implement", "canada-france-hawaii_telescope"), + ("event1596", "year", "2002"), + ("event1597", "location", "mauna_kea"), + ("event1597", "object", "psamathe"), + ("event1597", "subject", "science_team_4"), + ("event1597", "type", "discover_ev"), + ("event1597", "with_implement", "subaru_reflector_telescope"), + ("event1597", "year", "2003"), + ("event1598", "location", "cerro_tololo"), + ("event1598", "object", "sao"), + ("event1598", "subject", "science_team_18"), + ("event1598", "type", "discover_ev"), + ("event1598", "with_implement", "blanco_telescope"), + ("event1598", "with_implement", "canada-france-hawaii_telescope"), + ("event1598", "year", "2002"), + ("event1599", "location", "cerro_tololo"), + ("event1599", "object", "laomedeia"), + ("event1599", "subject", "science_team_18"), + ("event1599", "type", "discover_ev"), + ("event1599", "with_implement", "blanco_telescope"), + ("event1599", "with_implement", "canada-france-hawaii_telescope"), + ("event1599", "year", "2002"), + ("event1600", "location", "cerro_tololo"), + ("event1600", "object", "neso"), + ("event1600", "subject", "science_team_18"), + ("event1600", "type", "discover_ev"), + ("event1600", "with_implement", "blanco_telescope"), + ("event1600", "year", "2002"), + ("event1601", "location", "flagstaff"), + ("event1601", "object", "charon"), + ("event1601", "subject", "christy"), + ("event1601", "type", "discover_ev"), + ("event1601", "year", "1978"), + ("event1602", "object", "nix"), + ("event1602", "subject", "science_team_19"), + ("event1602", "type", "discover_ev"), + ("event1602", "with_implement", "hubble_space_telescope"), + ("event1602", "year", "2005"), + ("event1603", "object", "hydra"), + ("event1603", "subject", "science_team_19"), + ("event1603", "type", "discover_ev"), + ("event1603", "with_implement", "hubble_space_telescope"), + ("event1603", "year", "2005"), + ("event1604", "object", "kerberos"), + ("event1604", "subject", "science_team_20"), + ("event1604", "type", "discover_ev"), + ("event1604", "with_implement", "hubble_space_telescope"), + ("event1604", "year", "2011"), + ("event1605", "object", "styx"), + ("event1605", "subject", "science_team_21"), + ("event1605", "type", "discover_ev"), + ("event1605", "with_implement", "hubble_space_telescope"), + ("event1605", "year", "2012"), + ("event1606", "object", "moon"), + ("event1606", "subject", "adrastea"), + ("event1606", "type", "membership"), + ("event1607", "object", "moon"), + ("event1607", "subject", "metis"), + ("event1607", "type", "membership"), + ("event1608", "object", "moon"), + ("event1608", "subject", "callirrhoe"), + ("event1608", "type", "membership"), + ("event1609", "object", "moon"), + ("event1609", "subject", "themisto"), + ("event1609", "type", "membership"), + ("event1610", "object", "moon"), + ("event1610", "subject", "megaclite"), + ("event1610", "type", "membership"), + ("event1611", "object", "moon"), + ("event1611", "subject", "taygete"), + ("event1611", "type", "membership"), + ("event1612", "object", "moon"), + ("event1612", "subject", "chaldene"), + ("event1612", "type", "membership"), + ("event1613", "object", "moon"), + ("event1613", "subject", "harpalyke"), + ("event1613", "type", "membership"), + ("event1614", "object", "moon"), + ("event1614", "subject", "kalyke"), + ("event1614", "type", "membership"), + ("event1615", "object", "moon"), + ("event1615", "subject", "iocaste"), + ("event1615", "type", "membership"), + ("event1616", "object", "moon"), + ("event1616", "subject", "erinome"), + ("event1616", "type", "membership"), + ("event1617", "object", "moon"), + ("event1617", "subject", "isonoe"), + ("event1617", "type", "membership"), + ("event1618", "object", "moon"), + ("event1618", "subject", "praxidike"), + ("event1618", "type", "membership"), + ("event1619", "object", "moon"), + ("event1619", "subject", "autonoe"), + ("event1619", "type", "membership"), + ("event1620", "object", "moon"), + ("event1620", "subject", "thyone"), + ("event1620", "type", "membership"), + ("event1621", "object", "moon"), + ("event1621", "subject", "hermippe"), + ("event1621", "type", "membership"), + ("event1622", "object", "moon"), + ("event1622", "subject", "aitne"), + ("event1622", "type", "membership"), + ("event1623", "object", "moon"), + ("event1623", "subject", "eurydome"), + ("event1623", "type", "membership"), + ("event1624", "object", "moon"), + ("event1624", "subject", "euanthe"), + ("event1624", "type", "membership"), + ("event1625", "object", "moon"), + ("event1625", "subject", "euporie"), + ("event1625", "type", "membership"), + ("event1626", "object", "moon"), + ("event1626", "subject", "orthosie"), + ("event1626", "type", "membership"), + ("event1627", "object", "moon"), + ("event1627", "subject", "sponde"), + ("event1627", "type", "membership"), + ("event1628", "object", "moon"), + ("event1628", "subject", "kale"), + ("event1628", "type", "membership"), + ("event1629", "object", "moon"), + ("event1629", "subject", "pasithee"), + ("event1629", "type", "membership"), + ("event1630", "object", "moon"), + ("event1630", "subject", "hegemone"), + ("event1630", "type", "membership"), + ("event1631", "object", "moon"), + ("event1631", "subject", "mneme"), + ("event1631", "type", "membership"), + ("event1632", "object", "moon"), + ("event1632", "subject", "aoede"), + ("event1632", "type", "membership"), + ("event1633", "object", "moon"), + ("event1633", "subject", "thelxinoe"), + ("event1633", "type", "membership"), + ("event1634", "object", "moon"), + ("event1634", "subject", "arche"), + ("event1634", "type", "membership"), + ("event1635", "object", "moon"), + ("event1635", "subject", "kallichore"), + ("event1635", "type", "membership"), + ("event1636", "object", "moon"), + ("event1636", "subject", "helike"), + ("event1636", "type", "membership"), + ("event1637", "object", "moon"), + ("event1637", "subject", "carpo"), + ("event1637", "type", "membership"), + ("event1638", "object", "moon"), + ("event1638", "subject", "eukelade"), + ("event1638", "type", "membership"), + ("event1639", "object", "moon"), + ("event1639", "subject", "cyllene"), + ("event1639", "type", "membership"), + ("event1640", "object", "moon"), + ("event1640", "subject", "kore"), + ("event1640", "type", "membership"), + ("event1641", "object", "moon"), + ("event1641", "subject", "herse"), + ("event1641", "type", "membership"), + ("event1642", "object", "moon"), + ("event1642", "subject", "helene"), + ("event1642", "type", "membership"), + ("event1643", "object", "moon"), + ("event1643", "subject", "telesto"), + ("event1643", "type", "membership"), + ("event1644", "object", "moon"), + ("event1644", "subject", "calypso"), + ("event1644", "type", "membership"), + ("event1645", "object", "moon"), + ("event1645", "subject", "atlas"), + ("event1645", "type", "membership"), + ("event1646", "object", "moon"), + ("event1646", "subject", "prometheus"), + ("event1646", "type", "membership"), + ("event1647", "object", "moon"), + ("event1647", "subject", "pandora"), + ("event1647", "type", "membership"), + ("event1648", "object", "moon"), + ("event1648", "subject", "pan"), + ("event1648", "type", "membership"), + ("event1649", "object", "moon"), + ("event1649", "subject", "ymir"), + ("event1649", "type", "membership"), + ("event1650", "object", "moon"), + ("event1650", "subject", "paaliaq"), + ("event1650", "type", "membership"), + ("event1651", "object", "moon"), + ("event1651", "subject", "tarvos"), + ("event1651", "type", "membership"), + ("event1652", "object", "moon"), + ("event1652", "subject", "ijiraq"), + ("event1652", "type", "membership"), + ("event1653", "object", "moon"), + ("event1653", "subject", "suttungr"), + ("event1653", "type", "membership"), + ("event1654", "object", "moon"), + ("event1654", "subject", "kiviuq"), + ("event1654", "type", "membership"), + ("event1655", "object", "moon"), + ("event1655", "subject", "mundilfari"), + ("event1655", "type", "membership"), + ("event1656", "object", "moon"), + ("event1656", "subject", "albiorix"), + ("event1656", "type", "membership"), + ("event1657", "object", "moon"), + ("event1657", "subject", "skathi"), + ("event1657", "type", "membership"), + ("event1658", "object", "moon"), + ("event1658", "subject", "erriapus"), + ("event1658", "type", "membership"), + ("event1659", "object", "moon"), + ("event1659", "subject", "siarnaq"), + ("event1659", "type", "membership"), + ("event1660", "object", "moon"), + ("event1660", "subject", "thrymr"), + ("event1660", "type", "membership"), + ("event1661", "object", "moon"), + ("event1661", "subject", "narvi"), + ("event1661", "type", "membership"), + ("event1662", "object", "moon"), + ("event1662", "subject", "methone"), + ("event1662", "type", "membership"), + ("event1663", "object", "moon"), + ("event1663", "subject", "pallene"), + ("event1663", "type", "membership"), + ("event1664", "object", "moon"), + ("event1664", "subject", "polydeuces"), + ("event1664", "type", "membership"), + ("event1665", "object", "moon"), + ("event1665", "subject", "daphnis"), + ("event1665", "type", "membership"), + ("event1666", "object", "moon"), + ("event1666", "subject", "aegir"), + ("event1666", "type", "membership"), + ("event1667", "object", "moon"), + ("event1667", "subject", "bebhionn"), + ("event1667", "type", "membership"), + ("event1668", "object", "moon"), + ("event1668", "subject", "bergelmir"), + ("event1668", "type", "membership"), + ("event1669", "object", "moon"), + ("event1669", "subject", "bestla"), + ("event1669", "type", "membership"), + ("event1670", "object", "moon"), + ("event1670", "subject", "farbauti"), + ("event1670", "type", "membership"), + ("event1671", "object", "moon"), + ("event1671", "subject", "fenrir"), + ("event1671", "type", "membership"), + ("event1672", "object", "moon"), + ("event1672", "subject", "fornjot"), + ("event1672", "type", "membership"), + ("event1673", "object", "moon"), + ("event1673", "subject", "hati"), + ("event1673", "type", "membership"), + ("event1674", "object", "moon"), + ("event1674", "subject", "hyrrokkin"), + ("event1674", "type", "membership"), + ("event1675", "object", "moon"), + ("event1675", "subject", "kari"), + ("event1675", "type", "membership"), + ("event1676", "object", "moon"), + ("event1676", "subject", "loge"), + ("event1676", "type", "membership"), + ("event1677", "object", "moon"), + ("event1677", "subject", "skoll"), + ("event1677", "type", "membership"), + ("event1678", "object", "moon"), + ("event1678", "subject", "surtur"), + ("event1678", "type", "membership"), + ("event1679", "object", "moon"), + ("event1679", "subject", "anthe"), + ("event1679", "type", "membership"), + ("event1680", "object", "moon"), + ("event1680", "subject", "jarnsaxa"), + ("event1680", "type", "membership"), + ("event1681", "object", "moon"), + ("event1681", "subject", "greip"), + ("event1681", "type", "membership"), + ("event1682", "object", "moon"), + ("event1682", "subject", "tarqeq"), + ("event1682", "type", "membership"), + ("event1683", "object", "moon"), + ("event1683", "subject", "aegaeon"), + ("event1683", "type", "membership"), + ("event1684", "object", "moon"), + ("event1684", "subject", "cordelia"), + ("event1684", "type", "membership"), + ("event1685", "object", "moon"), + ("event1685", "subject", "ophelia"), + ("event1685", "type", "membership"), + ("event1686", "object", "moon"), + ("event1686", "subject", "bianca"), + ("event1686", "type", "membership"), + ("event1687", "object", "moon"), + ("event1687", "subject", "cressida"), + ("event1687", "type", "membership"), + ("event1688", "object", "moon"), + ("event1688", "subject", "desdemona"), + ("event1688", "type", "membership"), + ("event1689", "object", "moon"), + ("event1689", "subject", "juliet"), + ("event1689", "type", "membership"), + ("event1690", "object", "moon"), + ("event1690", "subject", "portia"), + ("event1690", "type", "membership"), + ("event1691", "object", "moon"), + ("event1691", "subject", "rosalind"), + ("event1691", "type", "membership"), + ("event1692", "object", "moon"), + ("event1692", "subject", "belinda"), + ("event1692", "type", "membership"), + ("event1693", "object", "moon"), + ("event1693", "subject", "puck"), + ("event1693", "type", "membership"), + ("event1694", "object", "moon"), + ("event1694", "subject", "caliban"), + ("event1694", "type", "membership"), + ("event1695", "object", "moon"), + ("event1695", "subject", "sycorax"), + ("event1695", "type", "membership"), + ("event1696", "object", "moon"), + ("event1696", "subject", "prospero"), + ("event1696", "type", "membership"), + ("event1697", "object", "moon"), + ("event1697", "subject", "setebos"), + ("event1697", "type", "membership"), + ("event1698", "object", "moon"), + ("event1698", "subject", "stephano"), + ("event1698", "type", "membership"), + ("event1699", "object", "moon"), + ("event1699", "subject", "trinculo"), + ("event1699", "type", "membership"), + ("event1700", "object", "moon"), + ("event1700", "subject", "francisco"), + ("event1700", "type", "membership"), + ("event1701", "object", "moon"), + ("event1701", "subject", "margaret"), + ("event1701", "type", "membership"), + ("event1702", "object", "moon"), + ("event1702", "subject", "ferdinand"), + ("event1702", "type", "membership"), + ("event1703", "object", "moon"), + ("event1703", "subject", "perdita"), + ("event1703", "type", "membership"), + ("event1704", "object", "moon"), + ("event1704", "subject", "mab"), + ("event1704", "type", "membership"), + ("event1705", "object", "moon"), + ("event1705", "subject", "cupid"), + ("event1705", "type", "membership"), + ("event1707", "object", "moon"), + ("event1707", "subject", "naiad"), + ("event1707", "type", "membership"), + ("event1708", "object", "moon"), + ("event1708", "subject", "thalassa"), + ("event1708", "type", "membership"), + ("event1709", "object", "moon"), + ("event1709", "subject", "despina"), + ("event1709", "type", "membership"), + ("event1710", "object", "moon"), + ("event1710", "subject", "galatea"), + ("event1710", "type", "membership"), + ("event1711", "object", "moon"), + ("event1711", "subject", "larissa"), + ("event1711", "type", "membership"), + ("event1712", "object", "moon"), + ("event1712", "subject", "proteus"), + ("event1712", "type", "membership"), + ("event1713", "object", "moon"), + ("event1713", "subject", "halimede"), + ("event1713", "type", "membership"), + ("event1714", "object", "moon"), + ("event1714", "subject", "psamathe"), + ("event1714", "type", "membership"), + ("event1715", "object", "moon"), + ("event1715", "subject", "sao"), + ("event1715", "type", "membership"), + ("event1716", "object", "moon"), + ("event1716", "subject", "laomedeia"), + ("event1716", "type", "membership"), + ("event1717", "object", "moon"), + ("event1717", "subject", "neso"), + ("event1717", "type", "membership"), + ("event1718", "object", "moon"), + ("event1718", "subject", "nix"), + ("event1718", "type", "membership"), + ("event1719", "object", "moon"), + ("event1719", "subject", "hydra"), + ("event1719", "type", "membership"), + ("event1720", "object", "moon"), + ("event1720", "subject", "kerberos"), + ("event1720", "type", "membership"), + ("event1721", "object", "moon"), + ("event1721", "subject", "styx"), + ("event1721", "type", "membership"), + ("event1722", "object", "spin"), + ("event1722", "subject", "adrastea"), + ("event1722", "type", "membership"), + ("event1723", "object", "spin"), + ("event1723", "subject", "metis"), + ("event1723", "type", "membership"), + ("event1724", "object", "spin"), + ("event1724", "subject", "callirrhoe"), + ("event1724", "type", "membership"), + ("event1725", "object", "spin"), + ("event1725", "subject", "themisto"), + ("event1725", "type", "membership"), + ("event1726", "object", "spin"), + ("event1726", "subject", "megaclite"), + ("event1726", "type", "membership"), + ("event1727", "object", "spin"), + ("event1727", "subject", "taygete"), + ("event1727", "type", "membership"), + ("event1728", "object", "spin"), + ("event1728", "subject", "chaldene"), + ("event1728", "type", "membership"), + ("event1729", "object", "spin"), + ("event1729", "subject", "harpalyke"), + ("event1729", "type", "membership"), + ("event1730", "object", "spin"), + ("event1730", "subject", "kalyke"), + ("event1730", "type", "membership"), + ("event1731", "object", "spin"), + ("event1731", "subject", "iocaste"), + ("event1731", "type", "membership"), + ("event1732", "object", "spin"), + ("event1732", "subject", "erinome"), + ("event1732", "type", "membership"), + ("event1733", "object", "spin"), + ("event1733", "subject", "isonoe"), + ("event1733", "type", "membership"), + ("event1734", "object", "spin"), + ("event1734", "subject", "praxidike"), + ("event1734", "type", "membership"), + ("event1735", "object", "spin"), + ("event1735", "subject", "autonoe"), + ("event1735", "type", "membership"), + ("event1736", "object", "spin"), + ("event1736", "subject", "thyone"), + ("event1736", "type", "membership"), + ("event1737", "object", "spin"), + ("event1737", "subject", "hermippe"), + ("event1737", "type", "membership"), + ("event1738", "object", "spin"), + ("event1738", "subject", "aitne"), + ("event1738", "type", "membership"), + ("event1739", "object", "spin"), + ("event1739", "subject", "eurydome"), + ("event1739", "type", "membership"), + ("event1740", "object", "spin"), + ("event1740", "subject", "euanthe"), + ("event1740", "type", "membership"), + ("event1741", "object", "spin"), + ("event1741", "subject", "euporie"), + ("event1741", "type", "membership"), + ("event1742", "object", "spin"), + ("event1742", "subject", "orthosie"), + ("event1742", "type", "membership"), + ("event1743", "object", "spin"), + ("event1743", "subject", "sponde"), + ("event1743", "type", "membership"), + ("event1744", "object", "spin"), + ("event1744", "subject", "kale"), + ("event1744", "type", "membership"), + ("event1745", "object", "spin"), + ("event1745", "subject", "pasithee"), + ("event1745", "type", "membership"), + ("event1746", "object", "spin"), + ("event1746", "subject", "hegemone"), + ("event1746", "type", "membership"), + ("event1747", "object", "spin"), + ("event1747", "subject", "mneme"), + ("event1747", "type", "membership"), + ("event1748", "object", "spin"), + ("event1748", "subject", "aoede"), + ("event1748", "type", "membership"), + ("event1749", "object", "spin"), + ("event1749", "subject", "thelxinoe"), + ("event1749", "type", "membership"), + ("event1750", "object", "spin"), + ("event1750", "subject", "arche"), + ("event1750", "type", "membership"), + ("event1751", "object", "spin"), + ("event1751", "subject", "kallichore"), + ("event1751", "type", "membership"), + ("event1752", "object", "spin"), + ("event1752", "subject", "helike"), + ("event1752", "type", "membership"), + ("event1753", "object", "spin"), + ("event1753", "subject", "carpo"), + ("event1753", "type", "membership"), + ("event1754", "object", "spin"), + ("event1754", "subject", "eukelade"), + ("event1754", "type", "membership"), + ("event1755", "object", "spin"), + ("event1755", "subject", "cyllene"), + ("event1755", "type", "membership"), + ("event1756", "object", "spin"), + ("event1756", "subject", "kore"), + ("event1756", "type", "membership"), + ("event1757", "object", "spin"), + ("event1757", "subject", "herse"), + ("event1757", "type", "membership"), + ("event1758", "object", "spin"), + ("event1758", "subject", "helene"), + ("event1758", "type", "membership"), + ("event1759", "object", "spin"), + ("event1759", "subject", "telesto"), + ("event1759", "type", "membership"), + ("event1760", "object", "spin"), + ("event1760", "subject", "calypso"), + ("event1760", "type", "membership"), + ("event1761", "object", "spin"), + ("event1761", "subject", "atlas"), + ("event1761", "type", "membership"), + ("event1762", "object", "spin"), + ("event1762", "subject", "prometheus"), + ("event1762", "type", "membership"), + ("event1763", "object", "spin"), + ("event1763", "subject", "pandora"), + ("event1763", "type", "membership"), + ("event1764", "object", "spin"), + ("event1764", "subject", "pan"), + ("event1764", "type", "membership"), + ("event1765", "object", "spin"), + ("event1765", "subject", "ymir"), + ("event1765", "type", "membership"), + ("event1766", "object", "spin"), + ("event1766", "subject", "paaliaq"), + ("event1766", "type", "membership"), + ("event1767", "object", "spin"), + ("event1767", "subject", "tarvos"), + ("event1767", "type", "membership"), + ("event1768", "object", "spin"), + ("event1768", "subject", "ijiraq"), + ("event1768", "type", "membership"), + ("event1769", "object", "spin"), + ("event1769", "subject", "suttungr"), + ("event1769", "type", "membership"), + ("event1770", "object", "spin"), + ("event1770", "subject", "kiviuq"), + ("event1770", "type", "membership"), + ("event1771", "object", "spin"), + ("event1771", "subject", "mundilfari"), + ("event1771", "type", "membership"), + ("event1772", "object", "spin"), + ("event1772", "subject", "albiorix"), + ("event1772", "type", "membership"), + ("event1773", "object", "spin"), + ("event1773", "subject", "skathi"), + ("event1773", "type", "membership"), + ("event1774", "object", "spin"), + ("event1774", "subject", "erriapus"), + ("event1774", "type", "membership"), + ("event1775", "object", "spin"), + ("event1775", "subject", "siarnaq"), + ("event1775", "type", "membership"), + ("event1776", "object", "spin"), + ("event1776", "subject", "thrymr"), + ("event1776", "type", "membership"), + ("event1777", "object", "spin"), + ("event1777", "subject", "narvi"), + ("event1777", "type", "membership"), + ("event1778", "object", "spin"), + ("event1778", "subject", "methone"), + ("event1778", "type", "membership"), + ("event1779", "object", "spin"), + ("event1779", "subject", "pallene"), + ("event1779", "type", "membership"), + ("event1780", "object", "spin"), + ("event1780", "subject", "polydeuces"), + ("event1780", "type", "membership"), + ("event1781", "object", "spin"), + ("event1781", "subject", "daphnis"), + ("event1781", "type", "membership"), + ("event1782", "object", "spin"), + ("event1782", "subject", "aegir"), + ("event1782", "type", "membership"), + ("event1783", "object", "spin"), + ("event1783", "subject", "bebhionn"), + ("event1783", "type", "membership"), + ("event1784", "object", "spin"), + ("event1784", "subject", "bergelmir"), + ("event1784", "type", "membership"), + ("event1785", "object", "spin"), + ("event1785", "subject", "bestla"), + ("event1785", "type", "membership"), + ("event1786", "object", "spin"), + ("event1786", "subject", "farbauti"), + ("event1786", "type", "membership"), + ("event1787", "object", "spin"), + ("event1787", "subject", "fenrir"), + ("event1787", "type", "membership"), + ("event1788", "object", "spin"), + ("event1788", "subject", "fornjot"), + ("event1788", "type", "membership"), + ("event1789", "object", "spin"), + ("event1789", "subject", "hati"), + ("event1789", "type", "membership"), + ("event1790", "object", "spin"), + ("event1790", "subject", "hyrrokkin"), + ("event1790", "type", "membership"), + ("event1791", "object", "spin"), + ("event1791", "subject", "kari"), + ("event1791", "type", "membership"), + ("event1792", "object", "spin"), + ("event1792", "subject", "loge"), + ("event1792", "type", "membership"), + ("event1793", "object", "spin"), + ("event1793", "subject", "skoll"), + ("event1793", "type", "membership"), + ("event1794", "object", "spin"), + ("event1794", "subject", "surtur"), + ("event1794", "type", "membership"), + ("event1795", "object", "spin"), + ("event1795", "subject", "anthe"), + ("event1795", "type", "membership"), + ("event1796", "object", "spin"), + ("event1796", "subject", "jarnsaxa"), + ("event1796", "type", "membership"), + ("event1797", "object", "spin"), + ("event1797", "subject", "greip"), + ("event1797", "type", "membership"), + ("event1798", "object", "spin"), + ("event1798", "subject", "tarqeq"), + ("event1798", "type", "membership"), + ("event1799", "object", "spin"), + ("event1799", "subject", "aegaeon"), + ("event1799", "type", "membership"), + ("event1800", "object", "spin"), + ("event1800", "subject", "cordelia"), + ("event1800", "type", "membership"), + ("event1801", "object", "spin"), + ("event1801", "subject", "ophelia"), + ("event1801", "type", "membership"), + ("event1802", "object", "spin"), + ("event1802", "subject", "bianca"), + ("event1802", "type", "membership"), + ("event1803", "object", "spin"), + ("event1803", "subject", "cressida"), + ("event1803", "type", "membership"), + ("event1804", "object", "spin"), + ("event1804", "subject", "desdemona"), + ("event1804", "type", "membership"), + ("event1805", "object", "spin"), + ("event1805", "subject", "juliet"), + ("event1805", "type", "membership"), + ("event1806", "object", "spin"), + ("event1806", "subject", "portia"), + ("event1806", "type", "membership"), + ("event1807", "object", "spin"), + ("event1807", "subject", "rosalind"), + ("event1807", "type", "membership"), + ("event1808", "object", "spin"), + ("event1808", "subject", "belinda"), + ("event1808", "type", "membership"), + ("event1809", "object", "spin"), + ("event1809", "subject", "puck"), + ("event1809", "type", "membership"), + ("event1810", "object", "spin"), + ("event1810", "subject", "caliban"), + ("event1810", "type", "membership"), + ("event1811", "object", "spin"), + ("event1811", "subject", "sycorax"), + ("event1811", "type", "membership"), + ("event1812", "object", "spin"), + ("event1812", "subject", "prospero"), + ("event1812", "type", "membership"), + ("event1813", "object", "spin"), + ("event1813", "subject", "setebos"), + ("event1813", "type", "membership"), + ("event1814", "object", "spin"), + ("event1814", "subject", "stephano"), + ("event1814", "type", "membership"), + ("event1815", "object", "spin"), + ("event1815", "subject", "trinculo"), + ("event1815", "type", "membership"), + ("event1816", "object", "spin"), + ("event1816", "subject", "francisco"), + ("event1816", "type", "membership"), + ("event1817", "object", "spin"), + ("event1817", "subject", "margaret"), + ("event1817", "type", "membership"), + ("event1818", "object", "spin"), + ("event1818", "subject", "ferdinand"), + ("event1818", "type", "membership"), + ("event1819", "object", "spin"), + ("event1819", "subject", "perdita"), + ("event1819", "type", "membership"), + ("event1820", "object", "spin"), + ("event1820", "subject", "mab"), + ("event1820", "type", "membership"), + ("event1821", "object", "spin"), + ("event1821", "subject", "cupid"), + ("event1821", "type", "membership"), + ("event1823", "object", "spin"), + ("event1823", "subject", "naiad"), + ("event1823", "type", "membership"), + ("event1824", "object", "spin"), + ("event1824", "subject", "thalassa"), + ("event1824", "type", "membership"), + ("event1825", "object", "spin"), + ("event1825", "subject", "despina"), + ("event1825", "type", "membership"), + ("event1826", "object", "spin"), + ("event1826", "subject", "galatea"), + ("event1826", "type", "membership"), + ("event1827", "object", "spin"), + ("event1827", "subject", "larissa"), + ("event1827", "type", "membership"), + ("event1828", "object", "spin"), + ("event1828", "subject", "proteus"), + ("event1828", "type", "membership"), + ("event1829", "object", "spin"), + ("event1829", "subject", "halimede"), + ("event1829", "type", "membership"), + ("event1830", "object", "spin"), + ("event1830", "subject", "psamathe"), + ("event1830", "type", "membership"), + ("event1831", "object", "spin"), + ("event1831", "subject", "sao"), + ("event1831", "type", "membership"), + ("event1832", "object", "spin"), + ("event1832", "subject", "laomedeia"), + ("event1832", "type", "membership"), + ("event1833", "object", "spin"), + ("event1833", "subject", "neso"), + ("event1833", "type", "membership"), + ("event1834", "object", "spin"), + ("event1834", "subject", "nix"), + ("event1834", "type", "membership"), + ("event1835", "object", "spin"), + ("event1835", "subject", "hydra"), + ("event1835", "type", "membership"), + ("event1836", "object", "spin"), + ("event1836", "subject", "kerberos"), + ("event1836", "type", "membership"), + ("event1837", "object", "spin"), + ("event1837", "subject", "styx"), + ("event1837", "type", "membership"), + ("event1838", "object", "thing"), + ("event1838", "subject", "adrastea"), + ("event1838", "type", "membership"), + ("event1839", "object", "thing"), + ("event1839", "subject", "metis"), + ("event1839", "type", "membership"), + ("event1840", "object", "thing"), + ("event1840", "subject", "callirrhoe"), + ("event1840", "type", "membership"), + ("event1841", "object", "thing"), + ("event1841", "subject", "themisto"), + ("event1841", "type", "membership"), + ("event1842", "object", "thing"), + ("event1842", "subject", "megaclite"), + ("event1842", "type", "membership"), + ("event1843", "object", "thing"), + ("event1843", "subject", "taygete"), + ("event1843", "type", "membership"), + ("event1844", "object", "thing"), + ("event1844", "subject", "chaldene"), + ("event1844", "type", "membership"), + ("event1845", "object", "thing"), + ("event1845", "subject", "harpalyke"), + ("event1845", "type", "membership"), + ("event1846", "object", "thing"), + ("event1846", "subject", "kalyke"), + ("event1846", "type", "membership"), + ("event1847", "object", "thing"), + ("event1847", "subject", "iocaste"), + ("event1847", "type", "membership"), + ("event1848", "object", "thing"), + ("event1848", "subject", "erinome"), + ("event1848", "type", "membership"), + ("event1849", "object", "thing"), + ("event1849", "subject", "isonoe"), + ("event1849", "type", "membership"), + ("event1850", "object", "thing"), + ("event1850", "subject", "praxidike"), + ("event1850", "type", "membership"), + ("event1851", "object", "thing"), + ("event1851", "subject", "autonoe"), + ("event1851", "type", "membership"), + ("event1852", "object", "thing"), + ("event1852", "subject", "thyone"), + ("event1852", "type", "membership"), + ("event1853", "object", "thing"), + ("event1853", "subject", "hermippe"), + ("event1853", "type", "membership"), + ("event1854", "object", "thing"), + ("event1854", "subject", "aitne"), + ("event1854", "type", "membership"), + ("event1855", "object", "thing"), + ("event1855", "subject", "eurydome"), + ("event1855", "type", "membership"), + ("event1856", "object", "thing"), + ("event1856", "subject", "euanthe"), + ("event1856", "type", "membership"), + ("event1857", "object", "thing"), + ("event1857", "subject", "euporie"), + ("event1857", "type", "membership"), + ("event1858", "object", "thing"), + ("event1858", "subject", "orthosie"), + ("event1858", "type", "membership"), + ("event1859", "object", "thing"), + ("event1859", "subject", "sponde"), + ("event1859", "type", "membership"), + ("event1860", "object", "thing"), + ("event1860", "subject", "kale"), + ("event1860", "type", "membership"), + ("event1861", "object", "thing"), + ("event1861", "subject", "pasithee"), + ("event1861", "type", "membership"), + ("event1862", "object", "thing"), + ("event1862", "subject", "hegemone"), + ("event1862", "type", "membership"), + ("event1863", "object", "thing"), + ("event1863", "subject", "mneme"), + ("event1863", "type", "membership"), + ("event1864", "object", "thing"), + ("event1864", "subject", "aoede"), + ("event1864", "type", "membership"), + ("event1865", "object", "thing"), + ("event1865", "subject", "thelxinoe"), + ("event1865", "type", "membership"), + ("event1866", "object", "thing"), + ("event1866", "subject", "arche"), + ("event1866", "type", "membership"), + ("event1867", "object", "thing"), + ("event1867", "subject", "kallichore"), + ("event1867", "type", "membership"), + ("event1868", "object", "thing"), + ("event1868", "subject", "helike"), + ("event1868", "type", "membership"), + ("event1869", "object", "thing"), + ("event1869", "subject", "carpo"), + ("event1869", "type", "membership"), + ("event1870", "object", "thing"), + ("event1870", "subject", "eukelade"), + ("event1870", "type", "membership"), + ("event1871", "object", "thing"), + ("event1871", "subject", "cyllene"), + ("event1871", "type", "membership"), + ("event1872", "object", "thing"), + ("event1872", "subject", "kore"), + ("event1872", "type", "membership"), + ("event1873", "object", "thing"), + ("event1873", "subject", "herse"), + ("event1873", "type", "membership"), + ("event1874", "object", "thing"), + ("event1874", "subject", "helene"), + ("event1874", "type", "membership"), + ("event1875", "object", "thing"), + ("event1875", "subject", "telesto"), + ("event1875", "type", "membership"), + ("event1876", "object", "thing"), + ("event1876", "subject", "calypso"), + ("event1876", "type", "membership"), + ("event1877", "object", "thing"), + ("event1877", "subject", "atlas"), + ("event1877", "type", "membership"), + ("event1878", "object", "thing"), + ("event1878", "subject", "prometheus"), + ("event1878", "type", "membership"), + ("event1879", "object", "thing"), + ("event1879", "subject", "pandora"), + ("event1879", "type", "membership"), + ("event1880", "object", "thing"), + ("event1880", "subject", "pan"), + ("event1880", "type", "membership"), + ("event1881", "object", "thing"), + ("event1881", "subject", "ymir"), + ("event1881", "type", "membership"), + ("event1882", "object", "thing"), + ("event1882", "subject", "paaliaq"), + ("event1882", "type", "membership"), + ("event1883", "object", "thing"), + ("event1883", "subject", "tarvos"), + ("event1883", "type", "membership"), + ("event1884", "object", "thing"), + ("event1884", "subject", "ijiraq"), + ("event1884", "type", "membership"), + ("event1885", "object", "thing"), + ("event1885", "subject", "suttungr"), + ("event1885", "type", "membership"), + ("event1886", "object", "thing"), + ("event1886", "subject", "kiviuq"), + ("event1886", "type", "membership"), + ("event1887", "object", "thing"), + ("event1887", "subject", "mundilfari"), + ("event1887", "type", "membership"), + ("event1888", "object", "thing"), + ("event1888", "subject", "albiorix"), + ("event1888", "type", "membership"), + ("event1889", "object", "thing"), + ("event1889", "subject", "skathi"), + ("event1889", "type", "membership"), + ("event1890", "object", "thing"), + ("event1890", "subject", "erriapus"), + ("event1890", "type", "membership"), + ("event1891", "object", "thing"), + ("event1891", "subject", "siarnaq"), + ("event1891", "type", "membership"), + ("event1892", "object", "thing"), + ("event1892", "subject", "thrymr"), + ("event1892", "type", "membership"), + ("event1893", "object", "thing"), + ("event1893", "subject", "narvi"), + ("event1893", "type", "membership"), + ("event1894", "object", "thing"), + ("event1894", "subject", "methone"), + ("event1894", "type", "membership"), + ("event1895", "object", "thing"), + ("event1895", "subject", "pallene"), + ("event1895", "type", "membership"), + ("event1896", "object", "thing"), + ("event1896", "subject", "polydeuces"), + ("event1896", "type", "membership"), + ("event1897", "object", "thing"), + ("event1897", "subject", "daphnis"), + ("event1897", "type", "membership"), + ("event1898", "object", "thing"), + ("event1898", "subject", "aegir"), + ("event1898", "type", "membership"), + ("event1899", "object", "thing"), + ("event1899", "subject", "bebhionn"), + ("event1899", "type", "membership"), + ("event1900", "object", "thing"), + ("event1900", "subject", "bergelmir"), + ("event1900", "type", "membership"), + ("event1901", "object", "thing"), + ("event1901", "subject", "bestla"), + ("event1901", "type", "membership"), + ("event1902", "object", "thing"), + ("event1902", "subject", "farbauti"), + ("event1902", "type", "membership"), + ("event1903", "object", "thing"), + ("event1903", "subject", "fenrir"), + ("event1903", "type", "membership"), + ("event1904", "object", "thing"), + ("event1904", "subject", "fornjot"), + ("event1904", "type", "membership"), + ("event1905", "object", "thing"), + ("event1905", "subject", "hati"), + ("event1905", "type", "membership"), + ("event1906", "object", "thing"), + ("event1906", "subject", "hyrrokkin"), + ("event1906", "type", "membership"), + ("event1907", "object", "thing"), + ("event1907", "subject", "kari"), + ("event1907", "type", "membership"), + ("event1908", "object", "thing"), + ("event1908", "subject", "loge"), + ("event1908", "type", "membership"), + ("event1909", "object", "thing"), + ("event1909", "subject", "skoll"), + ("event1909", "type", "membership"), + ("event1910", "object", "thing"), + ("event1910", "subject", "surtur"), + ("event1910", "type", "membership"), + ("event1911", "object", "thing"), + ("event1911", "subject", "anthe"), + ("event1911", "type", "membership"), + ("event1912", "object", "thing"), + ("event1912", "subject", "jarnsaxa"), + ("event1912", "type", "membership"), + ("event1913", "subject", "greip"), + ("event1914", "object", "thing"), + ("event1914", "subject", "tarqeq"), + ("event1914", "type", "membership"), + ("event1915", "object", "thing"), + ("event1915", "subject", "aegaeon"), + ("event1915", "type", "membership"), + ("event1916", "object", "thing"), + ("event1916", "subject", "cordelia"), + ("event1916", "type", "membership"), + ("event1917", "object", "thing"), + ("event1917", "subject", "ophelia"), + ("event1917", "type", "membership"), + ("event1918", "object", "thing"), + ("event1918", "subject", "bianca"), + ("event1918", "type", "membership"), + ("event1919", "object", "thing"), + ("event1919", "subject", "cressida"), + ("event1919", "type", "membership"), + ("event1920", "object", "thing"), + ("event1920", "subject", "desdemona"), + ("event1920", "type", "membership"), + ("event1921", "object", "thing"), + ("event1921", "subject", "juliet"), + ("event1921", "type", "membership"), + ("event1922", "object", "thing"), + ("event1922", "subject", "portia"), + ("event1922", "type", "membership"), + ("event1923", "object", "thing"), + ("event1923", "subject", "rosalind"), + ("event1923", "type", "membership"), + ("event1924", "object", "thing"), + ("event1924", "subject", "belinda"), + ("event1924", "type", "membership"), + ("event1925", "object", "thing"), + ("event1925", "subject", "puck"), + ("event1925", "type", "membership"), + ("event1926", "object", "thing"), + ("event1926", "subject", "caliban"), + ("event1926", "type", "membership"), + ("event1927", "object", "thing"), + ("event1927", "subject", "sycorax"), + ("event1927", "type", "membership"), + ("event1928", "object", "thing"), + ("event1928", "subject", "prospero"), + ("event1928", "type", "membership"), + ("event1929", "object", "thing"), + ("event1929", "subject", "setebos"), + ("event1929", "type", "membership"), + ("event1930", "object", "thing"), + ("event1930", "subject", "stephano"), + ("event1930", "type", "membership"), + ("event1931", "object", "thing"), + ("event1931", "subject", "trinculo"), + ("event1931", "type", "membership"), + ("event1932", "object", "thing"), + ("event1932", "subject", "francisco"), + ("event1932", "type", "membership"), + ("event1933", "object", "thing"), + ("event1933", "subject", "margaret"), + ("event1933", "type", "membership"), + ("event1934", "object", "thing"), + ("event1934", "subject", "ferdinand"), + ("event1934", "type", "membership"), + ("event1935", "object", "thing"), + ("event1935", "subject", "perdita"), + ("event1935", "type", "membership"), + ("event1936", "object", "thing"), + ("event1936", "subject", "mab"), + ("event1936", "type", "membership"), + ("event1937", "object", "thing"), + ("event1937", "subject", "cupid"), + ("event1937", "type", "membership"), + ("event1939", "object", "thing"), + ("event1939", "subject", "naiad"), + ("event1939", "type", "membership"), + ("event1940", "object", "thing"), + ("event1940", "subject", "thalassa"), + ("event1940", "type", "membership"), + ("event1941", "object", "thing"), + ("event1941", "subject", "dethinga"), + ("event1941", "type", "membership"), + ("event1942", "object", "thing"), + ("event1942", "subject", "galatea"), + ("event1942", "type", "membership"), + ("event1943", "object", "thing"), + ("event1943", "subject", "larissa"), + ("event1943", "type", "membership"), + ("event1944", "object", "thing"), + ("event1944", "subject", "proteus"), + ("event1944", "type", "membership"), + ("event1945", "object", "thing"), + ("event1945", "subject", "halimede"), + ("event1945", "type", "membership"), + ("event1946", "object", "thing"), + ("event1946", "subject", "psamathe"), + ("event1946", "type", "membership"), + ("event1947", "object", "thing"), + ("event1947", "subject", "sao"), + ("event1947", "type", "membership"), + ("event1948", "object", "thing"), + ("event1948", "subject", "laomedeia"), + ("event1948", "type", "membership"), + ("event1949", "object", "thing"), + ("event1949", "subject", "neso"), + ("event1949", "type", "membership"), + ("event1950", "object", "thing"), + ("event1950", "subject", "nix"), + ("event1950", "type", "membership"), + ("event1951", "object", "thing"), + ("event1951", "subject", "hydra"), + ("event1951", "type", "membership"), + ("event1952", "object", "thing"), + ("event1952", "subject", "kerberos"), + ("event1952", "type", "membership"), + ("event1953", "object", "thing"), + ("event1953", "subject", "styx"), + ("event1953", "type", "membership"), + ("event1954", "object", "science_team"), + ("event1954", "subject", "voyager_science_team"), + ("event1954", "type", "membership"), + ("event1955", "object", "science_team"), + ("event1955", "subject", "cassini_imaging_science_team"), + ("event1955", "type", "membership"), + ("event1956", "object", "science_team"), + ("event1956", "subject", "science_team_1"), + ("event1956", "type", "membership"), + ("event1957", "object", "science_team"), + ("event1957", "subject", "science_team_2"), + ("event1957", "type", "membership"), + ("event1958", "object", "science_team"), + ("event1958", "subject", "science_team_3"), + ("event1958", "type", "membership"), + ("event1959", "object", "science_team"), + ("event1959", "subject", "science_team_4"), + ("event1959", "type", "membership"), + ("event1960", "object", "science_team"), + ("event1960", "subject", "science_team_5"), + ("event1960", "type", "membership"), + ("event1961", "object", "science_team"), + ("event1961", "subject", "science_team_6"), + ("event1961", "type", "membership"), + ("event1962", "object", "science_team"), + ("event1962", "subject", "science_team_7"), + ("event1962", "type", "membership"), + ("event1963", "object", "science_team"), + ("event1963", "subject", "science_team_8"), + ("event1963", "type", "membership"), + ("event1964", "object", "science_team"), + ("event1964", "subject", "science_team_9"), + ("event1964", "type", "membership"), + ("event1965", "object", "science_team"), + ("event1965", "subject", "science_team_10"), + ("event1965", "type", "membership"), + ("event1966", "object", "science_team"), + ("event1966", "subject", "science_team_11"), + ("event1966", "type", "membership"), + ("event1967", "object", "science_team"), + ("event1967", "subject", "science_team_12"), + ("event1967", "type", "membership"), + ("event1968", "object", "science_team"), + ("event1968", "subject", "science_team_13"), + ("event1968", "type", "membership"), + ("event1969", "object", "science_team"), + ("event1969", "subject", "science_team_14"), + ("event1969", "type", "membership"), + ("event1970", "object", "science_team"), + ("event1970", "subject", "science_team_15"), + ("event1970", "type", "membership"), + ("event1971", "object", "science_team"), + ("event1971", "subject", "science_team_16"), + ("event1971", "type", "membership"), + ("event1972", "object", "science_team"), + ("event1972", "subject", "science_team_17"), + ("event1972", "type", "membership"), + ("event1973", "object", "science_team"), + ("event1973", "subject", "science_team_18"), + ("event1973", "type", "membership"), + ("event1974", "object", "science_team"), + ("event1974", "subject", "science_team_19"), + ("event1974", "type", "membership"), + ("event1975", "object", "science_team"), + ("event1975", "subject", "science_team_20"), + ("event1975", "type", "membership"), + ("event1976", "object", "science_team"), + ("event1976", "subject", "science_team_21"), + ("event1976", "type", "membership"), + ("event1977", "object", "science_team_1"), + ("event1977", "subject", "scotti"), + ("event1977", "type", "membership"), + ("event1978", "object", "science_team_1"), + ("event1978", "subject", "spahr"), + ("event1978", "type", "membership"), + ("event1979", "object", "science_team_1"), + ("event1979", "subject", "mcmillan"), + ("event1979", "type", "membership"), + ("event1980", "object", "science_team_1"), + ("event1980", "subject", "larson"), + ("event1980", "type", "membership"), + ("event1981", "object", "science_team_1"), + ("event1981", "subject", "montani"), + ("event1981", "type", "membership"), + ("event1982", "object", "science_team_1"), + ("event1982", "subject", "gleason"), + ("event1982", "type", "membership"), + ("event1983", "object", "science_team_1"), + ("event1983", "subject", "gehrels"), + ("event1983", "type", "membership"), + ("event1984", "object", "science_team_2"), + ("event1984", "subject", "kowal"), + ("event1984", "type", "membership"), + ("event1985", "object", "science_team_2"), + ("event1985", "subject", "roemer"), + ("event1985", "type", "membership"), + ("event1986", "object", "science_team_3"), + ("event1986", "subject", "sheppard"), + ("event1986", "type", "membership"), + ("event1987", "object", "science_team_3"), + ("event1987", "subject", "jewitt"), + ("event1987", "type", "membership"), + ("event1988", "object", "science_team_3"), + ("event1988", "subject", "fernandez"), + ("event1988", "type", "membership"), + ("event1989", "object", "science_team_3"), + ("event1989", "subject", "magnier"), + ("event1989", "type", "membership"), + ("event1990", "object", "science_team_4"), + ("event1990", "subject", "sheppard"), + ("event1990", "type", "membership"), + ("event1991", "object", "science_team_4"), + ("event1991", "subject", "jewitt"), + ("event1991", "type", "membership"), + ("event1992", "object", "science_team_4"), + ("event1992", "subject", "kleyna"), + ("event1992", "type", "membership"), + ("event1993", "object", "science_team_5"), + ("event1993", "subject", "gladman"), + ("event1993", "type", "membership"), + ("event1994", "object", "science_team_5"), + ("event1994", "subject", "allen"), + ("event1994", "type", "membership"), + ("event1995", "object", "science_team_6"), + ("event1995", "subject", "gladman"), + ("event1995", "type", "membership"), + ("event1996", "object", "science_team_6"), + ("event1996", "subject", "kavelaars"), + ("event1996", "type", "membership"), + ("event1997", "object", "science_team_6"), + ("event1997", "subject", "petit"), + ("event1997", "type", "membership"), + ("event1998", "object", "science_team_6"), + ("event1998", "subject", "allen"), + ("event1998", "type", "membership"), + ("event1999", "object", "science_team_7"), + ("event1999", "subject", "fountain"), + ("event1999", "type", "membership"), + ("event2001", "object", "science_team_7"), + ("event2001", "subject", "larson"), + ("event2001", "type", "membership"), + ("event2002", "object", "science_team_8"), + ("event2002", "subject", "laques"), + ("event2002", "type", "membership"), + ("event2003", "object", "science_team_8"), + ("event2003", "subject", "lecacheux"), + ("event2003", "type", "membership"), + ("event2004", "object", "science_team_9"), + ("event2004", "subject", "smith"), + ("event2004", "type", "membership"), + ("event2005", "object", "science_team_9"), + ("event2005", "subject", "reitsema"), + ("event2005", "type", "membership"), + ("event2006", "object", "science_team_9"), + ("event2006", "subject", "larson"), + ("event2006", "type", "membership"), + ("event2007", "object", "science_team_9"), + ("event2007", "subject", "fountain"), + ("event2007", "type", "membership"), + ("event2008", "object", "science_team_10"), + ("event2008", "subject", "pascu"), + ("event2008", "type", "membership"), + ("event2009", "object", "science_team_10"), + ("event2009", "subject", "seidelmann"), + ("event2009", "type", "membership"), + ("event2010", "object", "science_team_10"), + ("event2010", "subject", "baum"), + ("event2010", "type", "membership"), + ("event2011", "object", "science_team_10"), + ("event2011", "subject", "currie"), + ("event2011", "type", "membership"), + ("event2012", "object", "science_team_11"), + ("event2012", "subject", "gladman"), + ("event2012", "type", "membership"), + ("event2013", "object", "science_team_11"), + ("event2013", "subject", "kavelaars"), + ("event2013", "type", "membership"), + ("event2014", "object", "science_team_11"), + ("event2014", "subject", "petit"), + ("event2014", "type", "membership"), + ("event2015", "object", "science_team_11"), + ("event2015", "subject", "scholl"), + ("event2015", "type", "membership"), + ("event2016", "object", "science_team_11"), + ("event2016", "subject", "holman"), + ("event2016", "type", "membership"), + ("event2017", "object", "science_team_11"), + ("event2017", "subject", "marsden"), + ("event2017", "type", "membership"), + ("event2018", "object", "science_team_11"), + ("event2018", "subject", "nicholson"), + ("event2018", "type", "membership"), + ("event2019", "object", "science_team_11"), + ("event2019", "subject", "burns"), + ("event2019", "type", "membership"), + ("event2020", "object", "science_team_12"), + ("event2020", "subject", "gladman"), + ("event2020", "type", "membership"), + ("event2021", "object", "science_team_12"), + ("event2021", "subject", "nicholson"), + ("event2021", "type", "membership"), + ("event2022", "object", "science_team_12"), + ("event2022", "subject", "burns"), + ("event2022", "type", "membership"), + ("event2023", "object", "science_team_12"), + ("event2023", "subject", "kavelaars"), + ("event2023", "type", "membership"), + ("event2024", "object", "science_team_13"), + ("event2024", "subject", "holman"), + ("event2024", "type", "membership"), + ("event2025", "object", "science_team_13"), + ("event2025", "subject", "kavelaars"), + ("event2025", "type", "membership"), + ("event2026", "object", "science_team_13"), + ("event2026", "subject", "gladman"), + ("event2026", "type", "membership"), + ("event2027", "object", "science_team_13"), + ("event2027", "subject", "petit"), + ("event2027", "type", "membership"), + ("event2028", "object", "science_team_13"), + ("event2028", "subject", "scholl"), + ("event2028", "type", "membership"), + ("event2029", "object", "science_team_14"), + ("event2029", "subject", "holman"), + ("event2029", "type", "membership"), + ("event2030", "object", "science_team_14"), + ("event2030", "subject", "kavelaars"), + ("event2030", "type", "membership"), + ("event2031", "object", "science_team_14"), + ("event2031", "subject", "milisavljevic"), + ("event2031", "type", "membership"), + ("event2032", "object", "science_team_15"), + ("event2032", "subject", "kavelaars"), + ("event2032", "type", "membership"), + ("event2033", "object", "science_team_15"), + ("event2033", "subject", "holman"), + ("event2033", "type", "membership"), + ("event2034", "object", "science_team_15"), + ("event2034", "subject", "milisavljevic"), + ("event2034", "type", "membership"), + ("event2035", "object", "science_team_15"), + ("event2035", "subject", "grav"), + ("event2035", "type", "membership"), + ("event2036", "object", "science_team_16"), + ("event2036", "subject", "sheppard"), + ("event2036", "type", "membership"), + ("event2037", "object", "science_team_16"), + ("event2037", "subject", "jewitt"), + ("event2037", "type", "membership"), + ("event2038", "object", "science_team_17"), + ("event2038", "subject", "showalter"), + ("event2038", "type", "membership"), + ("event2039", "object", "science_team_17"), + ("event2039", "subject", "lissauer"), + ("event2039", "type", "membership"), + ("event2040", "object", "science_team_18"), + ("event2040", "subject", "holman"), + ("event2040", "type", "membership"), + ("event2041", "object", "science_team_18"), + ("event2041", "subject", "kavelaars"), + ("event2041", "type", "membership"), + ("event2042", "object", "science_team_18"), + ("event2042", "subject", "grav"), + ("event2042", "type", "membership"), + ("event2043", "object", "science_team_18"), + ("event2043", "subject", "fraser"), + ("event2043", "type", "membership"), + ("event2044", "object", "science_team_18"), + ("event2044", "subject", "milisavljevic"), + ("event2044", "type", "membership"), + ("event2045", "object", "science_team_19"), + ("event2045", "subject", "weaver"), + ("event2045", "type", "membership"), + ("event2046", "object", "science_team_19"), + ("event2046", "subject", "stern"), + ("event2046", "type", "membership"), + ("event2047", "object", "science_team_19"), + ("event2047", "subject", "mutchler"), + ("event2047", "type", "membership"), + ("event2048", "object", "science_team_19"), + ("event2048", "subject", "steffl"), + ("event2048", "type", "membership"), + ("event2049", "object", "science_team_19"), + ("event2049", "subject", "buie"), + ("event2049", "type", "membership"), + ("event2050", "object", "science_team_19"), + ("event2050", "subject", "merline"), + ("event2050", "type", "membership"), + ("event2051", "object", "science_team_19"), + ("event2051", "subject", "spencer"), + ("event2051", "type", "membership"), + ("event2052", "object", "science_team_19"), + ("event2052", "subject", "young_e_f"), + ("event2052", "type", "membership"), + ("event2053", "object", "science_team_19"), + ("event2053", "subject", "young_l_a"), + ("event2053", "type", "membership"), + ("event2054", "object", "science_team_20"), + ("event2054", "subject", "showalter"), + ("event2054", "type", "membership"), + ("event2055", "object", "science_team_20"), + ("event2055", "subject", "hamilton"), + ("event2055", "type", "membership"), + ("event2056", "object", "science_team_20"), + ("event2056", "subject", "stern"), + ("event2056", "type", "membership"), + ("event2057", "object", "science_team_20"), + ("event2057", "subject", "weaver"), + ("event2057", "type", "membership"), + ("event2058", "object", "science_team_20"), + ("event2058", "subject", "steffl"), + ("event2058", "type", "membership"), + ("event2059", "object", "science_team_20"), + ("event2059", "subject", "young_l_a"), + ("event2059", "type", "membership"), + ("event2060", "object", "science_team_21"), + ("event2060", "subject", "showalter"), + ("event2060", "type", "membership"), + ("event2061", "object", "science_team_21"), + ("event2061", "subject", "weaver"), + ("event2061", "type", "membership"), + ("event2062", "object", "science_team_21"), + ("event2062", "subject", "stern"), + ("event2062", "type", "membership"), + ("event2063", "object", "science_team_21"), + ("event2063", "subject", "steffl"), + ("event2063", "type", "membership"), + ("event2064", "object", "science_team_21"), + ("event2064", "subject", "buie"), + ("event2064", "type", "membership"), + ("event2065", "object", "science_team_21"), + ("event2065", "subject", "merline"), + ("event2065", "type", "membership"), + ("event2066", "object", "science_team_21"), + ("event2066", "subject", "mutchler"), + ("event2066", "type", "membership"), + ("event2067", "object", "science_team_21"), + ("event2067", "subject", "soummer"), + ("event2067", "type", "membership"), + ("event2068", "object", "science_team_21"), + ("event2068", "subject", "throop"), + ("event2068", "type", "membership"), + ("event2069", "object", "person"), + ("event2069", "subject", "scotti"), + ("event2069", "type", "membership"), + ("event2070", "object", "person"), + ("event2070", "subject", "spahr"), + ("event2070", "type", "membership"), + ("event2071", "object", "person"), + ("event2071", "subject", "mcmillan"), + ("event2071", "type", "membership"), + ("event2072", "object", "person"), + ("event2072", "subject", "montani"), + ("event2072", "type", "membership"), + ("event2073", "object", "person"), + ("event2073", "subject", "gleason"), + ("event2073", "type", "membership"), + ("event2074", "object", "person"), + ("event2074", "subject", "gehrels"), + ("event2074", "type", "membership"), + ("event2075", "object", "person"), + ("event2075", "subject", "roemer"), + ("event2075", "type", "membership"), + ("event2076", "object", "person"), + ("event2076", "subject", "sheppard"), + ("event2076", "type", "membership"), + ("event2077", "object", "person"), + ("event2077", "subject", "jewitt"), + ("event2077", "type", "membership"), + ("event2078", "object", "person"), + ("event2078", "subject", "fernandez"), + ("event2078", "type", "membership"), + ("event2079", "object", "person"), + ("event2079", "subject", "magnier"), + ("event2079", "type", "membership"), + ("event2080", "object", "person"), + ("event2080", "subject", "kleyna"), + ("event2080", "type", "membership"), + ("event2081", "object", "person"), + ("event2081", "subject", "gladman"), + ("event2081", "type", "membership"), + ("event2082", "object", "person"), + ("event2082", "subject", "kavelaars"), + ("event2082", "type", "membership"), + ("event2083", "object", "person"), + ("event2083", "subject", "petit"), + ("event2083", "type", "membership"), + ("event2084", "object", "person"), + ("event2084", "subject", "allen"), + ("event2084", "type", "membership"), + ("event2085", "object", "person"), + ("event2085", "subject", "laques"), + ("event2085", "type", "membership"), + ("event2086", "object", "person"), + ("event2086", "subject", "lecacheux"), + ("event2086", "type", "membership"), + ("event2087", "object", "person"), + ("event2087", "subject", "smith"), + ("event2087", "type", "membership"), + ("event2088", "object", "person"), + ("event2088", "subject", "reitsema"), + ("event2088", "type", "membership"), + ("event2089", "object", "person"), + ("event2089", "subject", "pascu"), + ("event2089", "type", "membership"), + ("event2090", "object", "person"), + ("event2090", "subject", "seidelmann"), + ("event2090", "type", "membership"), + ("event2091", "object", "person"), + ("event2091", "subject", "baum"), + ("event2091", "type", "membership"), + ("event2092", "object", "person"), + ("event2092", "subject", "currie"), + ("event2092", "type", "membership"), + ("event2093", "object", "person"), + ("event2093", "subject", "showalter"), + ("event2093", "type", "membership"), + ("event2094", "object", "person"), + ("event2094", "subject", "scholl"), + ("event2094", "type", "membership"), + ("event2095", "object", "person"), + ("event2095", "subject", "holman"), + ("event2095", "type", "membership"), + ("event2096", "object", "person"), + ("event2096", "subject", "marsden"), + ("event2096", "type", "membership"), + ("event2097", "object", "person"), + ("event2097", "subject", "burns"), + ("event2097", "type", "membership"), + ("event2098", "object", "person"), + ("event2098", "subject", "milisavljevic"), + ("event2098", "type", "membership"), + ("event2099", "object", "person"), + ("event2099", "subject", "grav"), + ("event2099", "type", "membership"), + ("event2100", "object", "person"), + ("event2100", "subject", "karkoschka"), + ("event2100", "type", "membership"), + ("event2101", "object", "person"), + ("event2101", "subject", "showalter"), + ("event2101", "type", "membership"), + ("event2102", "object", "person"), + ("event2102", "subject", "lissauer"), + ("event2102", "type", "membership"), + ("event2103", "object", "person"), + ("event2103", "subject", "fraser"), + ("event2103", "type", "membership"), + ("event2104", "object", "person"), + ("event2104", "subject", "christy"), + ("event2104", "type", "membership"), + ("event2105", "object", "person"), + ("event2105", "subject", "weaver"), + ("event2105", "type", "membership"), + ("event2106", "object", "person"), + ("event2106", "subject", "stern"), + ("event2106", "type", "membership"), + ("event2107", "object", "person"), + ("event2107", "subject", "mutchler"), + ("event2107", "type", "membership"), + ("event2108", "object", "person"), + ("event2108", "subject", "steffl"), + ("event2108", "type", "membership"), + ("event2109", "object", "person"), + ("event2109", "subject", "buie"), + ("event2109", "type", "membership"), + ("event2110", "object", "person"), + ("event2110", "subject", "merline"), + ("event2110", "type", "membership"), + ("event2111", "object", "person"), + ("event2111", "subject", "spencer"), + ("event2111", "type", "membership"), + ("event2112", "object", "person"), + ("event2112", "subject", "young_e_f"), + ("event2112", "type", "membership"), + ("event2113", "object", "person"), + ("event2113", "subject", "young_l_a"), + ("event2113", "type", "membership"), + ("event2114", "object", "person"), + ("event2114", "subject", "hamilton"), + ("event2114", "type", "membership"), + ("event2115", "object", "person"), + ("event2115", "subject", "soummer"), + ("event2115", "type", "membership"), + ("event2116", "object", "person"), + ("event2116", "subject", "throop"), + ("event2116", "type", "membership"), + ("event2117", "object", "thing"), + ("event2117", "subject", "scotti"), + ("event2117", "type", "membership"), + ("event2118", "object", "thing"), + ("event2118", "subject", "spahr"), + ("event2118", "type", "membership"), + ("event2119", "object", "thing"), + ("event2119", "subject", "mcmillan"), + ("event2119", "type", "membership"), + ("event2120", "object", "thing"), + ("event2120", "subject", "montani"), + ("event2120", "type", "membership"), + ("event2121", "object", "thing"), + ("event2121", "subject", "gleason"), + ("event2121", "type", "membership"), + ("event2122", "object", "thing"), + ("event2122", "subject", "gehrels"), + ("event2122", "type", "membership"), + ("event2123", "object", "thing"), + ("event2123", "subject", "roemer"), + ("event2123", "type", "membership"), + ("event2124", "object", "thing"), + ("event2124", "subject", "sheppard"), + ("event2124", "type", "membership"), + ("event2125", "object", "thing"), + ("event2125", "subject", "jewitt"), + ("event2125", "type", "membership"), + ("event2126", "object", "thing"), + ("event2126", "subject", "fernandez"), + ("event2126", "type", "membership"), + ("event2127", "object", "thing"), + ("event2127", "subject", "magnier"), + ("event2127", "type", "membership"), + ("event2128", "object", "thing"), + ("event2128", "subject", "kleyna"), + ("event2128", "type", "membership"), + ("event2129", "object", "thing"), + ("event2129", "subject", "gladman"), + ("event2129", "type", "membership"), + ("event2130", "object", "thing"), + ("event2130", "subject", "kavelaars"), + ("event2130", "type", "membership"), + ("event2131", "object", "thing"), + ("event2131", "subject", "petit"), + ("event2131", "type", "membership"), + ("event2132", "object", "thing"), + ("event2132", "subject", "allen"), + ("event2132", "type", "membership"), + ("event2133", "object", "thing"), + ("event2133", "subject", "laques"), + ("event2133", "type", "membership"), + ("event2134", "object", "thing"), + ("event2134", "subject", "lecacheux"), + ("event2134", "type", "membership"), + ("event2135", "object", "thing"), + ("event2135", "subject", "smith"), + ("event2135", "type", "membership"), + ("event2136", "object", "thing"), + ("event2136", "subject", "reitsema"), + ("event2136", "type", "membership"), + ("event2137", "object", "thing"), + ("event2137", "subject", "pascu"), + ("event2137", "type", "membership"), + ("event2138", "object", "thing"), + ("event2138", "subject", "seidelmann"), + ("event2138", "type", "membership"), + ("event2139", "object", "thing"), + ("event2139", "subject", "baum"), + ("event2139", "type", "membership"), + ("event2140", "object", "thing"), + ("event2140", "subject", "currie"), + ("event2140", "type", "membership"), + ("event2141", "object", "thing"), + ("event2141", "subject", "showalter"), + ("event2141", "type", "membership"), + ("event2142", "object", "thing"), + ("event2142", "subject", "scholl"), + ("event2142", "type", "membership"), + ("event2143", "object", "thing"), + ("event2143", "subject", "holman"), + ("event2143", "type", "membership"), + ("event2144", "object", "thing"), + ("event2144", "subject", "marsden"), + ("event2144", "type", "membership"), + ("event2145", "object", "thing"), + ("event2145", "subject", "burns"), + ("event2145", "type", "membership"), + ("event2146", "object", "thing"), + ("event2146", "subject", "milisavljevic"), + ("event2146", "type", "membership"), + ("event2147", "object", "thing"), + ("event2147", "subject", "grav"), + ("event2147", "type", "membership"), + ("event2148", "object", "thing"), + ("event2148", "subject", "karkoschka"), + ("event2148", "type", "membership"), + ("event2149", "object", "thing"), + ("event2149", "subject", "showalter"), + ("event2149", "type", "membership"), + ("event2150", "object", "thing"), + ("event2150", "subject", "lissauer"), + ("event2150", "type", "membership"), + ("event2151", "object", "thing"), + ("event2151", "subject", "fraser"), + ("event2151", "type", "membership"), + ("event2152", "object", "thing"), + ("event2152", "subject", "christy"), + ("event2152", "type", "membership"), + ("event2153", "object", "thing"), + ("event2153", "subject", "weaver"), + ("event2153", "type", "membership"), + ("event2154", "object", "thing"), + ("event2154", "subject", "stern"), + ("event2154", "type", "membership"), + ("event2155", "object", "thing"), + ("event2155", "subject", "mutchler"), + ("event2155", "type", "membership"), + ("event2156", "object", "thing"), + ("event2156", "subject", "steffl"), + ("event2156", "type", "membership"), + ("event2157", "object", "thing"), + ("event2157", "subject", "buie"), + ("event2157", "type", "membership"), + ("event2158", "object", "thing"), + ("event2158", "subject", "merline"), + ("event2158", "type", "membership"), + ("event2159", "object", "thing"), + ("event2159", "subject", "spencer"), + ("event2159", "type", "membership"), + ("event2160", "object", "thing"), + ("event2160", "subject", "young_e_f"), + ("event2160", "type", "membership"), + ("event2161", "object", "thing"), + ("event2161", "subject", "young_l_a"), + ("event2161", "type", "membership"), + ("event2162", "object", "thing"), + ("event2162", "subject", "hamilton"), + ("event2162", "type", "membership"), + ("event2163", "object", "thing"), + ("event2163", "subject", "soummer"), + ("event2163", "type", "membership"), + ("event2164", "object", "thing"), + ("event2164", "subject", "throop"), + ("event2164", "type", "membership"), + ("event2165", "object", "telescope"), + ("event2165", "subject", "refractor_telescope_1"), + ("event2165", "type", "membership"), + ("event2166", "object", "telescope"), + ("event2166", "subject", "refractor_telescope_2"), + ("event2166", "type", "membership"), + ("event2167", "object", "telescope"), + ("event2167", "subject", "refractor_telescope_3"), + ("event2167", "type", "membership"), + ("event2168", "object", "telescope"), + ("event2168", "subject", "refractor_telescope_4"), + ("event2168", "type", "membership"), + ("event2169", "object", "telescope"), + ("event2169", "subject", "reflector_telescope_1"), + ("event2169", "type", "membership"), + ("event2170", "object", "telescope"), + ("event2170", "subject", "reflector_telescope_2"), + ("event2170", "type", "membership"), + ("event2171", "object", "telescope"), + ("event2171", "subject", "reflector_telescope_3"), + ("event2171", "type", "membership"), + ("event2172", "object", "telescope"), + ("event2172", "subject", "reflector_telescope_4"), + ("event2172", "type", "membership"), + ("event2173", "object", "telescope"), + ("event2173", "subject", "ground_based_telescope_1"), + ("event2173", "type", "membership"), + ("event2174", "object", "telescope"), + ("event2174", "subject", "ground_based_telescope_2"), + ("event2174", "type", "membership"), + ("event2175", "object", "telescope"), + ("event2175", "subject", "ground_based_telescope_3"), + ("event2175", "type", "membership"), + ("event2176", "object", "telescope"), + ("event2176", "subject", "galilean_telescope_1"), + ("event2176", "type", "membership"), + ("event2177", "object", "telescope"), + ("event2177", "subject", "crossley_reflector_telescope"), + ("event2177", "type", "membership"), + ("event2178", "object", "telescope"), + ("event2178", "subject", "cassegrain_telescope"), + ("event2178", "type", "membership"), + ("event2179", "object", "telescope"), + ("event2179", "subject", "hooker_telescope"), + ("event2179", "type", "membership"), + ("event2180", "object", "telescope"), + ("event2180", "subject", "schmidt_telescope"), + ("event2180", "type", "membership"), + ("event2181", "object", "telescope"), + ("event2181", "subject", "subaru_reflector_telescope"), + ("event2181", "type", "membership"), + ("event2182", "object", "telescope"), + ("event2182", "subject", "canada-france-hawaii_telescope"), + ("event2182", "type", "membership"), + ("event2183", "object", "telescope"), + ("event2183", "subject", "aerial_telescope_1"), + ("event2183", "type", "membership"), + ("event2184", "object", "telescope"), + ("event2184", "subject", "bruce_astrograph"), + ("event2184", "type", "membership"), + ("event2185", "object", "telescope"), + ("event2185", "subject", "telescope_1"), + ("event2185", "type", "membership"), + ("event2186", "object", "telescope"), + ("event2186", "subject", "hale_telescope"), + ("event2186", "type", "membership"), + ("event2187", "object", "telescope"), + ("event2187", "subject", "hubble_space_telescope"), + ("event2187", "type", "membership"), + ("event2188", "object", "telescope"), + ("event2188", "subject", "blanco_telescope"), + ("event2188", "type", "membership"), + ("event2189", "object", "refractor_telescope_1"), + ("event2189", "subject", "26_inch"), + ("event2189", "type", "length"), + ("event2190", "object", "refractor_telescope_2"), + ("event2190", "subject", "36_inch"), + ("event2190", "type", "length"), + ("event2191", "object", "refractor_telescope_3"), + ("event2191", "subject", "36_inch"), + ("event2191", "type", "length"), + ("event2192", "object", "reflector_telescope_1"), + ("event2192", "subject", "40_foot"), + ("event2192", "type", "length"), + ("event2193", "object", "reflector_telescope_2"), + ("event2193", "subject", "6.5_m"), + ("event2193", "type", "length"), + ("event2194", "object", "reflector_telescope_3"), + ("event2194", "subject", "24_inch"), + ("event2194", "type", "length"), + ("event2195", "object", "reflector_telescope_4"), + ("event2195", "subject", "4_m"), + ("event2195", "type", "length"), + ("event2196", "object", "crossley_reflector_telescope"), + ("event2196", "subject", "36_inch"), + ("event2196", "type", "length"), + ("event2197", "object", "cassegrain_telescope"), + ("event2197", "subject", "30_inch"), + ("event2197", "type", "length"), + ("event2198", "object", "hooker_telescope"), + ("event2198", "subject", "100_inch"), + ("event2198", "type", "length"), + ("event2199", "object", "schmidt_telescope"), + ("event2199", "subject", "122_cm"), + ("event2199", "type", "length"), + ("event2200", "object", "subaru_reflector_telescope"), + ("event2200", "subject", "8.2_m"), + ("event2200", "type", "length"), + ("event2201", "object", "canada-france-hawaii_telescope"), + ("event2201", "subject", "3.6_m"), + ("event2201", "type", "length"), + ("event2202", "object", "bruce_astrograph"), + ("event2202", "subject", "24_inch"), + ("event2202", "type", "length"), + ("event2203", "object", "telescope_1"), + ("event2203", "subject", "106_cm"), + ("event2203", "type", "length"), + ("event2204", "object", "hale_telescope"), + ("event2204", "subject", "200_inch"), + ("event2204", "type", "length"), + ("event2205", "object", "blanco_telescope"), + ("event2205", "subject", "4.0_m"), + ("event2205", "type", "length"), + ("event2206", "object", "spacecraft"), + ("event2206", "subject", "voyager_1"), + ("event2206", "type", "membership"), + ("event2207", "object", "spacecraft"), + ("event2207", "subject", "voyager_2"), + ("event2207", "type", "membership"), + ("event2208", "object", "spacecraft"), + ("event2208", "subject", "cassini"), + ("event2208", "type", "membership"), + ("event2209", "object", "thing"), + ("event2209", "subject", "refractor_telescope_1"), + ("event2209", "type", "membership"), + ("event2210", "object", "thing"), + ("event2210", "subject", "refractor_telescope_2"), + ("event2210", "type", "membership"), + ("event2211", "object", "thing"), + ("event2211", "subject", "refractor_telescope_3"), + ("event2211", "type", "membership"), + ("event2212", "object", "thing"), + ("event2212", "subject", "refractor_telescope_4"), + ("event2212", "type", "membership"), + ("event2213", "object", "thing"), + ("event2213", "subject", "reflector_telescope_1"), + ("event2213", "type", "membership"), + ("event2214", "object", "thing"), + ("event2214", "subject", "reflector_telescope_2"), + ("event2214", "type", "membership"), + ("event2215", "object", "thing"), + ("event2215", "subject", "reflector_telescope_3"), + ("event2215", "type", "membership"), + ("event2216", "object", "thing"), + ("event2216", "subject", "reflector_telescope_4"), + ("event2216", "type", "membership"), + ("event2217", "object", "thing"), + ("event2217", "subject", "ground_based_telescope_1"), + ("event2217", "type", "membership"), + ("event2218", "object", "thing"), + ("event2218", "subject", "ground_based_telescope_2"), + ("event2218", "type", "membership"), + ("event2219", "object", "thing"), + ("event2219", "subject", "ground_based_telescope_3"), + ("event2219", "type", "membership"), + ("event2220", "object", "thing"), + ("event2220", "subject", "galilean_telescope_1"), + ("event2220", "type", "membership"), + ("event2221", "object", "thing"), + ("event2221", "subject", "crossley_reflector_telescope"), + ("event2221", "type", "membership"), + ("event2222", "object", "thing"), + ("event2222", "subject", "cassegrain_telescope"), + ("event2222", "type", "membership"), + ("event2223", "object", "thing"), + ("event2223", "subject", "hooker_telescope"), + ("event2223", "type", "membership"), + ("event2224", "object", "thing"), + ("event2224", "subject", "schmidt_telescope"), + ("event2224", "type", "membership"), + ("event2225", "object", "thing"), + ("event2225", "subject", "subaru_reflector_telescope"), + ("event2225", "type", "membership"), + ("event2226", "object", "thing"), + ("event2226", "subject", "canada-france-hawaii_telescope"), + ("event2226", "type", "membership"), + ("event2227", "object", "thing"), + ("event2227", "subject", "aerial_telescope_1"), + ("event2227", "type", "membership"), + ("event2228", "object", "thing"), + ("event2228", "subject", "bruce_astrograph"), + ("event2228", "type", "membership"), + ("event2229", "object", "thing"), + ("event2229", "subject", "telescope_1"), + ("event2229", "type", "membership"), + ("event2230", "object", "thing"), + ("event2230", "subject", "hale_telescope"), + ("event2230", "type", "membership"), + ("event2231", "object", "thing"), + ("event2231", "subject", "hubble_space_telescope"), + ("event2231", "type", "membership"), + ("event2232", "object", "thing"), + ("event2232", "subject", "blanco_telescope"), + ("event2232", "type", "membership"), + ("event2233", "object", "thing"), + ("event2233", "subject", "voyager_1"), + ("event2233", "type", "membership"), + ("event2234", "object", "thing"), + ("event2234", "subject", "voyager_2"), + ("event2234", "type", "membership"), + ("event2235", "object", "thing"), + ("event2235", "subject", "cassini"), + ("event2235", "type", "membership"), + ("event2236", "object", "place"), + ("event2236", "subject", "us_naval_observatory"), + ("event2236", "type", "membership"), + ("event2237", "object", "place"), + ("event2237", "subject", "padua"), + ("event2237", "type", "membership"), + ("event2238", "object", "place"), + ("event2238", "subject", "mt_hamilton"), + ("event2238", "type", "membership"), + ("event2239", "object", "place"), + ("event2239", "subject", "greenwich"), + ("event2239", "type", "membership"), + ("event2240", "object", "place"), + ("event2240", "subject", "mt_wilson"), + ("event2240", "type", "membership"), + ("event2241", "object", "place"), + ("event2241", "subject", "mt_palomar"), + ("event2241", "type", "membership"), + ("event2242", "object", "place"), + ("event2242", "subject", "kitt_peak"), + ("event2242", "type", "membership"), + ("event2243", "object", "place"), + ("event2243", "subject", "mauna_kea"), + ("event2243", "type", "membership"), + ("event2244", "object", "place"), + ("event2244", "subject", "slough"), + ("event2244", "type", "membership"), + ("event2245", "object", "place"), + ("event2245", "subject", "paris"), + ("event2245", "type", "membership"), + ("event2246", "object", "place"), + ("event2246", "subject", "the_hague"), + ("event2246", "type", "membership"), + ("event2247", "object", "place"), + ("event2247", "subject", "cambridge"), + ("event2247", "type", "membership"), + ("event2248", "object", "place"), + ("event2248", "subject", "liverpool"), + ("event2248", "type", "membership"), + ("event2249", "object", "place"), + ("event2249", "subject", "arequipa"), + ("event2249", "type", "membership"), + ("event2250", "object", "place"), + ("event2250", "subject", "pic_du_midi"), + ("event2250", "type", "membership"), + ("event2251", "object", "place"), + ("event2251", "subject", "flagstaff"), + ("event2251", "type", "membership"), + ("event2252", "object", "place"), + ("event2252", "subject", "la_silla"), + ("event2252", "type", "membership"), + ("event2253", "object", "place"), + ("event2253", "subject", "mt_hopkins"), + ("event2253", "type", "membership"), + ("event2254", "object", "place"), + ("event2254", "subject", "fort_davis"), + ("event2254", "type", "membership"), + ("event2255", "object", "place"), + ("event2255", "subject", "cerro_tololo"), + ("event2255", "type", "membership")] + +--copied from gangster_v4: utility functions for making lists unique +subset s t = (s \\ t) == [] + +makeset x = Set.toList $ Set.fromList x + +--copied from gangster_v4: combinators +termor tmph1 tmph2 setofevs = + liftM2 (||) (tmph1 setofevs) (tmph2 setofevs) + +termand tmph1 tmph2 setofevs = + liftM2 (&&) (tmph1 setofevs) (tmph2 setofevs) + +that = nounand + +nounand = liftM2 intersect + +nounor' s t = makeset(s ++ t) +nounor = liftM2 nounor' + +a' nph vbph = + length (intersect nph vbph) /= 0 +a = liftM2 a' + +every' nph vbph = + subset nph vbph +every = liftM2 every' + +no' nph vbph = + length (intersect nph vbph) == 0 +no = liftM2 no' + +none' nph vbph = + no nph vbph +none = liftM2 none' + +one' nph vbph = + length (intersect nph vbph) == 1 +one = liftM2 one' + +two' nph vbph = + length (intersect nph vbph) == 2 +two = liftM2 two' + + +--which nph vbph = if result /= [] then result else "none." +-- where result = unwords $ intersect nph vbph + +which nph vbph = do + nph_ <- nph + vbph_ <- vbph + let result = unwords $ intersect nph_ vbph_ + return $ if result /= [] then result else "none." + +how_many' nph vbph = + show $ length (intersect nph vbph) +how_many = liftM2 how_many' + +who = which (person `nounor` science_team) + +--New +what' nph = if result /= [] then result else "nothing." + where result = unwords nph +what = liftM what' + +with :: (IO [String] -> IO Bool) -> (String, IO [String] -> IO Bool) +with tmph = ("with_implement", tmph) + +make_pnoun noun = liftM2 List.elem $ return noun + + +--end of copied from gangster_v4 + +sun = get_members dataStore ("sun") +planet = get_members dataStore ("planet") +moon = get_members dataStore ("moon") +person = get_members dataStore ("person") +thing = get_members dataStore ("thing") +telescope = get_members dataStore ("telescope") +science_team = get_members dataStore ("science_team") +spacecraft = get_members dataStore ("spacecraft") +place = get_members dataStore ("place") + +atmospheric = get_members dataStore ("atmospheric") +blue = get_members dataStore ("blue") +depressed = get_members dataStore ("depressed") +solid = get_members dataStore ("solid") +brown = get_members dataStore ("brown") +gaseous = get_members dataStore ("gaseous") +green = get_members dataStore ("green") +red = get_members dataStore ("red") +ringed = get_members dataStore ("ringed") +vacuumous = get_members dataStore ("vacuumous") +exists = thing +spin = get_members dataStore ("spin") + + +--Need to ensure uniqueness in output? I.e. discover_intrans has multiple "hall"s in list +discover_intrans = get_subjs_of_event_type dataStore ("discover_ev") +orbit_intrans = get_subjs_of_event_type dataStore ("orbit_ev") + +discover = make_relation dataStore "discover_ev" +discovered = discover + +orbit = make_relation dataStore "orbit_ev" +orbited = orbit + +--For prepositional phrases +discover' = make_filtered_relation dataStore "discover_ev" +discovered' = discover' + +orbit' = make_filtered_relation dataStore "orbit_ev" +orbited' = orbit' + +hall = make_pnoun "hall" +phobos = make_pnoun "phobos" +mars = make_pnoun "mars" +refractor_telescope_1 = make_pnoun "refractor_telescope_1" + +--Need two, because one needs to be inverted for a grammar rule to work. +--Could just flip arguments, but this is more readable +make_relation :: (TripleStore m) => m -> String -> (IO [String] -> IO Bool) -> IO [String] +make_relation ev_data rel tmph = do + images <- make_image ev_data rel "subject" + subPairs <- filterM (\(_, evs) -> + tmph $ liftM concat $ mapM (\ev -> getts_3 ev_data (ev, "object", "?")) evs) images + return $ map fst subPairs + +{-make_inverted_relation :: (TripleStore m) => m -> String -> (IO [String] -> IO Bool) -> IO [String] +make_inverted_relation ev_data rel tmph = do + images <- make_image ev_data rel "object" + objPairs <- filterM (\(_, evs) -> + tmph $ liftM concat $ mapM (\ev -> getts_3 ev_data (ev, "subject", "?")) evs) images + return $ map fst objPairs-} + +--Prepositional filtering + +--filter_ev takes a list of ([String], IO [String] -> IO Bool) where the [String] is the list of identifiers corresponding +--to the data the preposition predicate needs to evaluate (e.g., for location predicates the list will contain "location", +{-filter_ev :: (TripleStore m) => m -> [([String], IO [String] -> IO Bool)] -> Event -> IO Bool +filter_ev ev_data [] ev = return True +filter_ev ev_data ((names,pred):list) ev = do + relevant_list <- mapM (\name -> getts_3 ev_data (ev, name, "?")) names + res <- pred $ return $ concat relevant_list + if res then filter_ev ev_data list ev else return False-} + +--Modified filter_ev to accommodate predicates like every, one, two, etc... +--The difference is that it concatenates the data the preposition predicate needs to evaluate across all events and +--applies the preposition predicate to that, so that all data is available to the predicate rather than just the subset +--given by a specific event +filter_ev :: (TripleStore m) => m -> [([String], IO [String] -> IO Bool)] -> [Event] -> IO Bool +filter_ev _ [] _ = return True +filter_ev ev_data ((names,pred):list) evs = do + relevant_list <- mapM (\ev -> mapM (\name -> getts_3 ev_data (ev, name, "?")) names) evs + res <- pred $ return $ concat $ concat $ relevant_list + if res then filter_ev ev_data list evs else return False + +{-make_filtered_relation :: (TripleStore m) => m -> String -> (IO [String] -> IO Bool) -> [([String], IO [String] -> IO Bool)] -> IO [String] +make_filtered_relation ev_data rel tmph preps = do + images <- make_image ev_data rel "subject" + subPairs <- filterM (\(_, evs) -> do + filtEvents <- filterM (filter_ev ev_data preps) evs + tmph $ liftM concat $ mapM (\ev -> getts_3 ev_data (ev, "object", "?")) filtEvents) images + return $ map fst subPairs-} + +--Modified version of make_filtered_relation to accomodate new filter_ev +make_filtered_relation :: (TripleStore m) => m -> String -> (IO [String] -> IO Bool) -> [([String], IO [String] -> IO Bool)] -> IO [String] +make_filtered_relation ev_data rel tmph preps = do + images <- make_image ev_data rel "subject" + subPairs <- filterM (\(_, evs) -> filter_ev ev_data ((["object"], tmph):preps) evs) images + return $ map fst subPairs + +{-make_inverted_filtered_relation :: (TripleStore m) => m -> String -> [([String], IO [String] -> IO Bool)] -> IO [String] +make_inverted_filtered_relation ev_data rel preps = do + images <- make_image ev_data rel "object" + objPairs <- filterM (\(_, evs) -> anyM (filter_ev ev_data preps) evs) images + return $ map fst objPairs + where + anyM :: (Monad m) => (a -> m Bool) -> [a] -> m Bool + anyM pred lst = foldM (\x y -> pred y >>= \res -> return $ x || res) False lst -} + +--Modified version of make_inverted_filtered_relation to accomodate new filter_ev +make_inverted_filtered_relation :: (TripleStore m) => m -> String -> [([String], IO [String] -> IO Bool)] -> IO [String] +make_inverted_filtered_relation ev_data rel preps = do + images <- make_image ev_data rel "object" + objPairs <- filterM (\(_, evs) -> filter_ev ev_data preps evs) images + return $ map fst objPairs + +--Copied from old solarman: +yesno' x = if x then "yes." else "no" +yesno = liftM yesno' + +sand = liftM2 (&&) + +{- +||----------------------------------------------------------------------------- +|| BASIC INTERPRETERS +||----------------------------------------------------------------------------- +-} + + +pnoun = pre_processed Pnoun +cnoun = pre_processed Cnoun +adj = pre_processed Adj +det = pre_processed Det +intransvb = pre_processed Intransvb +transvb = pre_processed Transvb +linkingvb = pre_processed Linkingvb +relpron = pre_processed Relpron +termphjoin = pre_processed Termphjoin +verbphjoin = pre_processed Verbphjoin +nounjoin = pre_processed Nounjoin +indefpron = pre_processed Indefpron +{- +terminator = uninterpreted (SPECIAL_SYMBOL_TERM ".") + $orelse + uninterpreted (SPECIAL_SYMBOL_TERM "?") + $orelse + uninterpreted (SPECIAL_SYMBOL_TERM "\n") +-} +sentjoin = pre_processed Sentjoin +quest1 = pre_processed Quest1 +quest2 = pre_processed Quest2 +quest3 = pre_processed Quest3 +quest4a = pre_processed Quest4a +quest4b = pre_processed Quest4b + +--NEW FOR PREPOSITIONAL PHRASES +prep = pre_processed Prepn +year = pre_processed Year + + +pre_processed key + = let formAlts altTerminals = memoize key (altTerminals) + formTerminal [x] = x + formTerminal (x:xs) = x <|> formTerminal xs + list_of_ters = [ terminal (term a) z + | (a,b,z) <- dictionary + , b == key] + in formAlts (formTerminal list_of_ters) + + +meaning_of p dInp key + = let dInput = words dInp + appParser = unState (p T0 [] ((1,[]), dInput) ([],[])) [] + upperBound = (length dInput) + 1 + in formFinal key upperBound (snd $ appParser) + +meaning_of_ p dInp key + = let dInput = words dInp + appParser = unState (p T0 [] ((1,[]), dInput) ([],[])) [] + upperBound = (length dInput) + 1 + in (snd $ appParser) + +formAtts key ePoint t + = concat $ concat $ concat $ concat + [[[[ val1 |(id1,val1)<-synAtts] + |(((st,inAtt2),(end,synAtts)), ts)<-rs, st == 1 && end == ePoint] + |((i,inAt1),((cs,ct),rs)) <- sr ] + |(s,sr) <- t, s == key ] +formFinal key ePoint t + = concat $ concat $ concat $ concat + [[[[ val1 |(id1,val1)<-synAtts] + |(((st,inAtt2),(end,synAtts)), ts)<-rs, st == 1 && end == ePoint] + |((i,inAt1),((cs,ct),rs)) <- sr ] + |(s,sr) <- t, s == key ] +{- +test p = unState (p ((1,[]),input) ([],[])) [] + +main = do putStr $ render80 $ formatAtts Question $ snd $ test (question T0 []) + +type Start1 = (Int, InsAttVals) +type Start = ((Int,InsAttVals), [String]) +type End = (Int, InsAttVals) +type Atts = [AttValue] -- [(AttType, AttValue)] +type InsAttVals = [(Instance, Atts)] + + + ,[(Start1,(Context,Result))] +type Mtable = [(MemoL + ) + ] +type Result = [((Start1, End),[Tree MemoL])] +||----------------------------------------------------------------------------- +|| THE ATTRIBUTE GRAMMAR +||----------------------------------------------------------------------------- +-} + +snouncla + = memoize Snouncla + (parser + (nt cnoun S3) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO copy [synthesized NOUNCLA_VAL OF S3]] + <|> + parser (nt adjs S1 *> nt cnoun S2) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO intrsct1 [synthesized ADJ_VAL OF S1, + synthesized NOUNCLA_VAL OF S2]] + + ) + +------------------------------------------------------------------------------- +relnouncla + = memoize Relnouncla + (parser + (nt snouncla S1 *> nt relpron S2 *> nt joinvbph S3) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO apply_middle1[synthesized NOUNCLA_VAL OF S1, + synthesized RELPRON_VAL OF S2, + synthesized VERBPH_VAL OF S3]] + <|> + parser + (nt snouncla S4) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO copy [synthesized NOUNCLA_VAL OF S4]] + ) +---------------------------------------------------------------------------- + + + +nouncla + = memoize Nouncla + (parser (nt relnouncla S1 *> nt nounjoin S2 *> nt nouncla S3) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO apply_middle2 [synthesized NOUNCLA_VAL OF S1, + synthesized NOUNJOIN_VAL OF S2, + synthesized NOUNCLA_VAL OF S3]] + <|> + parser (nt relnouncla S1 *> nt relpron S2 *> nt linkingvb S3 *> nt nouncla S4) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO apply_middle3 [synthesized NOUNCLA_VAL OF S1, + synthesized RELPRON_VAL OF S2, + synthesized NOUNCLA_VAL OF S4]] + <|> + parser (nt relnouncla S1) + [rule_s NOUNCLA_VAL OF LHS ISEQUALTO copy [synthesized NOUNCLA_VAL OF S1]] + ) + +------------------------------------------------------------------------------ +adjs + = memoize Adjs + (parser (nt adj S1 *> nt adjs S2) + [rule_s ADJ_VAL OF LHS ISEQUALTO intrsct2 [synthesized ADJ_VAL OF S1, + synthesized ADJ_VAL OF S2]] + <|> + parser (nt adj S3) + [rule_s ADJ_VAL OF LHS ISEQUALTO copy [synthesized ADJ_VAL OF S3]] + ) +------------------------------------------------------------------------------ + +detph + = memoize Detph + (parser (nt indefpron S3) + [rule_s TERMPH_VAL OF LHS ISEQUALTO copy [synthesized TERMPH_VAL OF S3]] + <|> + parser (nt det S1 *> nt nouncla S2) + [rule_s TERMPH_VAL OF LHS ISEQUALTO applydet [synthesized DET_VAL OF S1, + synthesized NOUNCLA_VAL OF S2]] + ) + +---------------------------------------------------------------------------------- +transvbph + = memoize Transvbph + (parser (nt transvb S1 *> nt jointermph S2) --"discovered phobos (and blah and blah and blah)" + [rule_s VERBPH_VAL OF LHS ISEQUALTO applytransvb [synthesized VERB_VAL OF S1, + synthesized TERMPH_VAL OF S2]] + {-<|> + parser (nt linkingvb S1 *> nt transvb S2 *> nt prepa S3 *> nt jointermph S4) --"was discovered by hall" --OBSOLETE + [rule_s VERBPH_VAL OF LHS ISEQUALTO drop3rd [synthesized LINKINGVB_VAL OF S1, + synthesized VERB_VAL OF S2, + synthesized PREPA_VAL OF S3, + synthesized TERMPH_VAL OF S4]]-} + <|> -- NEW FOR PREPOSITIONAL PHRASES + parser (nt transvb S1 *> nt jointermph S2 *> nt preps S3) + [rule_s VERBPH_VAL OF LHS ISEQUALTO applytransvbprep [synthesized VERB_VAL OF S1, + synthesized TERMPH_VAL OF S2, + synthesized PREP_VAL OF S3]] + <|> + parser (nt linkingvb S1 *> nt transvb S2 *> nt preps S3) --"was discovered by hall in..." + [rule_s VERBPH_VAL OF LHS ISEQUALTO drop3rdprep [synthesized LINKINGVB_VAL OF S1, + synthesized VERB_VAL OF S2, + synthesized PREP_VAL OF S3]] + ) + +---------------------------------------------------------------------------------- +--NEW FOR PREPOSITIONAL PHRASES + +preps + = memoize Preps + (parser (nt prepph S1) + [rule_s PREP_VAL OF LHS ISEQUALTO applyprep [synthesized PREPPH_VAL OF S1]] + <|> + parser (nt prepph S1 *> nt preps S2) + [rule_s PREP_VAL OF LHS ISEQUALTO applypreps [synthesized PREPPH_VAL OF S1, + synthesized PREP_VAL OF S2]] + ) + +prepph + = memoize Prepph + (parser (nt prep S1 *> nt jointermph S2) + [rule_s PREPPH_VAL OF LHS ISEQUALTO applyprepph [synthesized PREPN_VAL OF S1, + synthesized TERMPH_VAL OF S2]] + ) + +---------------------------------------------------------------------------------- + +verbph + = memoize Verbph + ( + parser (nt transvbph S4) + [rule_s VERBPH_VAL OF LHS ISEQUALTO copy [synthesized VERBPH_VAL OF S4]] + <|> + parser (nt intransvb S5) + [rule_s VERBPH_VAL OF LHS ISEQUALTO copy [synthesized VERBPH_VAL OF S5]] + <|> + parser (nt linkingvb S1 *> nt det S2 *> nt nouncla S3) + [rule_s VERBPH_VAL OF LHS ISEQUALTO applyvbph [synthesized NOUNCLA_VAL OF S3]] + ) +------------------------------------------------------------------------------------ + +termph + = memoize Termph + ( + parser (nt pnoun S1) + [rule_s TERMPH_VAL OF LHS ISEQUALTO copy [synthesized TERMPH_VAL OF S1]] + <|> + parser (nt detph S2) + [rule_s TERMPH_VAL OF LHS ISEQUALTO copy [synthesized TERMPH_VAL OF S2]] + <|> + parser (nt year S3) + [rule_s TERMPH_VAL OF LHS ISEQUALTO applyyear [synthesized YEAR_VAL OF S3]] + ) + + +------------------------------------------------------------------------------------ +jointermph + = memoize Jointermph + ( +{- parser (nt jointermph S1 *> nt termphjoin S2 *> nt termph S3) + [rule_s TERMPH_VAL OF LHS ISEQUALTO appjoin1 [synthesized TERMPH_VAL OF S1, + synthesized TERMPHJOIN_VAL OF S2, + synthesized TERMPH_VAL OF S3]] + <|> +-} + parser (nt jointermph S1 *> nt termphjoin S2 *> nt jointermph S3) --"hall and galileo discovered...?" + [rule_s TERMPH_VAL OF LHS ISEQUALTO appjoin1 [synthesized TERMPH_VAL OF S1, + synthesized TERMPHJOIN_VAL OF S2, + synthesized TERMPH_VAL OF S3]] + <|> + parser (nt termph S4) + [rule_s TERMPH_VAL OF LHS ISEQUALTO copy [synthesized TERMPH_VAL OF S4]] + ) +------------------------------------------------------------------------------------ +joinvbph + = memoize Joinvbph + ( + parser (nt verbph S1 *> nt verbphjoin S2 *> nt joinvbph S3) + [rule_s VERBPH_VAL OF LHS ISEQUALTO appjoin2 [synthesized VERBPH_VAL OF S1, + synthesized VBPHJOIN_VAL OF S2, + synthesized VERBPH_VAL OF S3]] + <|> + parser (nt verbph S4) + [rule_s VERBPH_VAL OF LHS ISEQUALTO copy [synthesized VERBPH_VAL OF S4]] + ) +--------------------------------------------------------------------------- +sent + = memoize Sent + ( + parser (nt jointermph S1 *> nt joinvbph S2) + [rule_s SENT_VAL OF LHS ISEQUALTO apply_termphrase [synthesized TERMPH_VAL OF S1, + synthesized VERBPH_VAL OF S2]] + ) +-- **************************************************************************** -- +two_sent + = memoize Two_sent + ( + parser (nt sent S1 *> nt sentjoin S2 *> nt sent S3) + [rule_s SENT_VAL OF LHS ISEQUALTO sent_val_comp [synthesized SENT_VAL OF S1, + synthesized SENTJOIN_VAL OF S2, + synthesized SENT_VAL OF S3]] + ) +------------------------------------------------------------------------------------ + +question + = memoize Question + ( + parser (nt quest1 S1 *> nt sent S2 ) + [rule_s QUEST_VAL OF LHS ISEQUALTO ans1 [synthesized QUEST1_VAL OF S1, + synthesized SENT_VAL OF S2]] + <|> + parser (nt quest2 S1 *> nt joinvbph S2) + [rule_s QUEST_VAL OF LHS ISEQUALTO ans2 [synthesized QUEST2_VAL OF S1, + synthesized VERBPH_VAL OF S2]] + <|> + parser (nt quest3 S1 *> nt nouncla S2 *> nt joinvbph S3) + [rule_s QUEST_VAL OF LHS ISEQUALTO ans3 [synthesized QUEST3_VAL OF S1, + synthesized NOUNCLA_VAL OF S2, + synthesized VERBPH_VAL OF S3]] + <|> + parser (nt quest4 S1 *> nt nouncla S2 *> nt joinvbph S3) + [rule_s QUEST_VAL OF LHS ISEQUALTO ans3 [synthesized QUEST3_VAL OF S1, + synthesized NOUNCLA_VAL OF S2, + synthesized VERBPH_VAL OF S3]] + <|> + parser (nt two_sent S1) + [rule_s QUEST_VAL OF LHS ISEQUALTO truefalse [synthesized SENT_VAL OF S1]] + <|> + parser (nt sent S1) + [rule_s QUEST_VAL OF LHS ISEQUALTO truefalse [synthesized SENT_VAL OF S1]] + + ) +quest4 = memoize Quest4 + ( + parser (nt quest4a S1 *> nt quest4b S2) + [rule_s QUEST3_VAL OF LHS ISEQUALTO copy [synthesized QUEST3_VAL OF S1]] + ) +--------------------------------------------------------------------------------- + +query = memoize Query + ( + parser (nt question S1) -- *> nt terminator S2) + [rule_s QUEST_VAL OF LHS ISEQUALTO copy [synthesized QUEST_VAL OF S1]] + ) + + + +{- +|| ----------------------------------------------------------------------------- +|| THE SEMANTICS - PART I : The attribute evaluation functions +||----------------------------------------------------------------------------- +applyBiOp [e1,op,e2] + = \atts -> VAL ((getAtts getB_OP atts op ) (getAtts getAVAL atts e1 ) (getAtts getAVAL atts e2)) + +-} +-- getAtts f (y,i) x = f (head (x y i)) +-- copy [b] = \(atts,i) -> head (b atts i) + +intrsct1 [x, y] + = \atts -> NOUNCLA_VAL (liftM2 intersect (getAtts getAVALS atts x) (getAtts getAVALS atts y)) + +intrsct2 [x, y] + = \atts -> ADJ_VAL (liftM2 intersect (getAtts getAVALS atts x) (getAtts getAVALS atts y)) + +applydet [x, y] + = \atts -> TERMPH_VAL $ (getAtts getDVAL atts x) (getAtts getAVALS atts y) + +--make_trans_vb is very similar to make_relation. getBR must mean "get binary relation" +--getTVAL must mean "get predicate" i.e. what would be "phobos" in "discover phobos" +--Changed to get rid of make_trans_vb, since the getBR attribute was changed to not +--be a binary relation but instead a function that make_relation would give +--I.e., the kind of function that make_trans_vb would have generated, since they were +--nearly identical +applytransvb [x, y] + -- = \atts -> VERBPH_VAL ((make_trans_vb (getAtts getBR atts x)) (getAtts getTVAL atts y)) + = \atts -> VERBPH_VAL $ + let reln = getAtts getBR atts x + predicate = getAtts getTVAL atts y in + make_relation dataStore reln predicate + +--NEW FOR PREPOSITIONAL PHRASES +applytransvbprep [x, y, z] + = \atts -> VERBPH_VAL $ + let reln = getAtts getBR atts x + predicate = getAtts getTVAL atts y + preps = getAtts getPREPVAL atts z in + make_filtered_relation dataStore reln predicate preps + +applyprepph [x, y] + = \atts -> PREPPH_VAL $ + let prep_names = getAtts getPREPNVAL atts x + termph = getAtts getTVAL atts y in + (prep_names, termph) + +applyprep [x] + = \atts -> PREP_VAL $ [(getAtts getPREPPHVAL atts x)] --[(["with_implement"], a telescope)] + +applypreps [x, y] + = \atts -> PREP_VAL $ (getAtts getPREPPHVAL atts x):(getAtts getPREPVAL atts y) + +applyyear [x] + = \atts -> TERMPH_VAL $ make_pnoun $ show $ getAtts getYEARVAL atts x + +--END PREPOSITIONAL PHRASES + +applyvbph [z] + = \atts -> VERBPH_VAL (getAtts getAVALS atts z) + +appjoin1 [x, y, z] + = \atts -> TERMPH_VAL $ (getAtts getTJVAL atts y) (getAtts getTVAL atts x) (getAtts getTVAL atts z) + +appjoin2 [x, y, z] + = \atts -> VERBPH_VAL ((getAtts getVJVAL atts y) (getAtts getAVALS atts x) (getAtts getAVALS atts z)) + +apply_middle1 [x, y, z] + = \atts -> NOUNCLA_VAL ((getAtts getRELVAL atts y) (getAtts getAVALS atts x) (getAtts getAVALS atts z)) + +apply_middle2 [x, y, z] + = \atts -> NOUNCLA_VAL ((getAtts getNJVAL atts y) (getAtts getAVALS atts x) (getAtts getAVALS atts z)) + +apply_middle3 [x, y, z] + = \atts -> NOUNCLA_VAL ((getAtts getRELVAL atts y) (getAtts getAVALS atts x) (getAtts getAVALS atts z)) + +-- Think "a orbited by b" vs "b orbits a" +{-drop3rd [w, x, y, z] + = \atts -> VERBPH_VAL $ + let reln = getAtts getBR atts x in + let predicate = getAtts getTVAL atts z in + make_inverted_relation dataStore reln predicate-} + +--NEW FOR PREPOSITIONAL PHRASES +drop3rdprep [w, x, p] + = \atts -> VERBPH_VAL $ + let reln = getAtts getBR atts x in + let preps = getAtts getPREPVAL atts p in + make_inverted_filtered_relation dataStore reln preps +--END PREPOSITIONAL PHRASES + +apply_termphrase [x, y] + = \atts -> SENT_VAL ((getAtts getTVAL atts x) (getAtts getAVALS atts y) ) + +sent_val_comp [s1, f, s2] + = \atts -> SENT_VAL ((getAtts getSJVAL atts f) (getAtts getSV atts s1) (getAtts getSV atts s2)) + +ans1 [x, y] + = \atts -> QUEST_VAL ((getAtts getQU1VAL atts x) (getAtts getSV atts y) ) + +ans2 [x, y] + = \atts -> QUEST_VAL ((getAtts getQU2VAL atts x) (getAtts getAVALS atts y)) + +ans3 [x, y, z] + = \atts -> QUEST_VAL ((getAtts getQU3VAL atts x) (getAtts getAVALS atts y) (getAtts getAVALS atts z)) + +truefalse [x] + = \atts -> QUEST_VAL $ do + bool <- (getAtts getSV atts x) + return $ if bool then "true." else "false." + +{- +||----------------------------------------------------------------------------- +|| THE SEMANTICS - PART II : Functions used to obtain objects denoted by +|| proper nouns, verbs, etc. +||----------------------------------------------------------------------------- + +|| FUNCTION USED TO DEFINE OBJECTS ASSOCIATED WITH PROPER NOUNS +-} +--test_wrt e s = e `elem` s + +-- FUNCTION USED TO DEFINE MEANINGS OF VERBS IN TERMS OF RELATIONS +--make_trans_vb rel p = [x | (x, image_x) <- collect rel, p image_x] -- Similar to make_relation + +dictionary = [ + ("thing", Cnoun, [NOUNCLA_VAL thing]), + ("things", Cnoun, [NOUNCLA_VAL thing]), + ("planets", Cnoun, [NOUNCLA_VAL planet]), + ("planet", Cnoun, [NOUNCLA_VAL planet]), + ("person", Cnoun, [NOUNCLA_VAL person]), + ("sun", Cnoun, [NOUNCLA_VAL sun]), + ("moon", Cnoun, [NOUNCLA_VAL moon]), + ("moons", Cnoun, [NOUNCLA_VAL moon]), + ("satellite", Cnoun, [NOUNCLA_VAL moon]), + ("satellites", Cnoun, [NOUNCLA_VAL moon]), + ("atmospheric", Adj, [ADJ_VAL atmospheric]), + ("blue", Adj, [ADJ_VAL blue]), + ("blue", Adj, [ADJ_VAL depressed]), + ("solid", Adj, [ADJ_VAL solid]), + ("brown", Adj, [ADJ_VAL brown]), + ("gaseous", Adj, [ADJ_VAL gaseous]), + ("green", Adj, [ADJ_VAL green]), + ("red", Adj, [ADJ_VAL red]), + ("ringed", Adj, [ADJ_VAL ringed]), + ("vacuumous", Adj, [ADJ_VAL vacuumous]), + ("exist", Intransvb, [VERBPH_VAL thing]), + ("exists", Intransvb, [VERBPH_VAL thing]), + ("spin", Intransvb, [VERBPH_VAL spin]), + ("spins", Intransvb, [VERBPH_VAL spin]), + ("the", Det, [DET_VAL $ a]), + ("a", Det, [DET_VAL $ a]), + ("one", Det, [DET_VAL $ one]), + ("an", Det, [DET_VAL $ a]), + ("some", Det, [DET_VAL $ a]), + ("any", Det, [DET_VAL $ a]), + ("no", Det, [DET_VAL $ no]), + ("every", Det, [DET_VAL $ every]), + ("all", Det, [DET_VAL $ every]), + ("two", Det, [DET_VAL $ two]), + ("bernard", Pnoun, [TERMPH_VAL $ make_pnoun "bernard"]), + ("bond", Pnoun, [TERMPH_VAL $ make_pnoun "bond"]), + ("venus", Pnoun, [TERMPH_VAL $ make_pnoun "venus"]), + ("cassini", Pnoun, [TERMPH_VAL $ make_pnoun "cassini"]), + ("dollfus", Pnoun, [TERMPH_VAL $ make_pnoun "dollfus"]), + ("Fouuntain", Pnoun, [TERMPH_VAL $ make_pnoun "Fouuntain"]), + ("galileo", Pnoun, [TERMPH_VAL $ make_pnoun "galileo"]), + ("hall", Pnoun, [TERMPH_VAL $ make_pnoun "hall"]), + ("herschel", Pnoun, [TERMPH_VAL $ make_pnoun "herschel"]), + ("huygens", Pnoun, [TERMPH_VAL $ make_pnoun "huygens"]), + ("kowal", Pnoun, [TERMPH_VAL $ make_pnoun "kowal"]), + ("kuiper", Pnoun, [TERMPH_VAL $ make_pnoun "kuiper"]), + ("larsen", Pnoun, [TERMPH_VAL $ make_pnoun "larsen"]), + ("lassell", Pnoun, [TERMPH_VAL $ make_pnoun "lassell"]), + ("melotte", Pnoun, [TERMPH_VAL $ make_pnoun "melotte"]), + ("nicholson", Pnoun, [TERMPH_VAL $ make_pnoun "nicholson"]), + ("perrine", Pnoun, [TERMPH_VAL $ make_pnoun "perrine"]), + ("pickering", Pnoun, [TERMPH_VAL $ make_pnoun "pickering"]), + ("almathea", Pnoun, [TERMPH_VAL $ make_pnoun "almathea"]), + ("ariel", Pnoun, [TERMPH_VAL $ make_pnoun "ariel"]), + ("callisto", Pnoun, [TERMPH_VAL $ make_pnoun "callisto"]), + ("charon", Pnoun, [TERMPH_VAL $ make_pnoun "charon"]), + ("deimos", Pnoun, [TERMPH_VAL $ make_pnoun "deimos"]), + ("dione", Pnoun, [TERMPH_VAL $ make_pnoun "dione"]), + ("earth", Pnoun, [TERMPH_VAL $ make_pnoun "earth"]), + ("enceladus", Pnoun, [TERMPH_VAL $ make_pnoun "enceladus"]), + ("europa", Pnoun, [TERMPH_VAL $ make_pnoun "europa"]), + ("ganymede", Pnoun, [TERMPH_VAL $ make_pnoun "ganymede"]), + ("hyperion", Pnoun, [TERMPH_VAL $ make_pnoun "hyperion"]), + ("iapetus", Pnoun, [TERMPH_VAL $ make_pnoun "iapetus"]), + ("io", Pnoun, [TERMPH_VAL $ make_pnoun "io"]), + ("janus", Pnoun, [TERMPH_VAL $ make_pnoun "janus"]), + ("jupiter", Pnoun, [TERMPH_VAL $ make_pnoun "jupiter"]), + ("jupitereighth", Pnoun, [TERMPH_VAL $ make_pnoun "jupitereighth"]), + ("jupitereleventh", Pnoun, [TERMPH_VAL $ make_pnoun "jupitereleventh"]), + ("jupiterfourteenth", Pnoun, [TERMPH_VAL $ make_pnoun "jupiterfourteenth"]), + ("jupiterninth", Pnoun, [TERMPH_VAL $ make_pnoun "jupiterninth"]), + ("jupiterseventh", Pnoun, [TERMPH_VAL $ make_pnoun "jupiterseventh"]), + ("jupitersixth", Pnoun, [TERMPH_VAL $ make_pnoun "jupitersixth"]), + ("jupitertenth", Pnoun, [TERMPH_VAL $ make_pnoun "jupitertenth"]), + ("jupiterthirteenth", Pnoun, [TERMPH_VAL $ make_pnoun "jupiterthirteenth"]), + ("jupitertwelfth", Pnoun, [TERMPH_VAL $ make_pnoun "jupitertwelfth"]), + ("luna", Pnoun, [TERMPH_VAL $ make_pnoun "luna"]), + ("mars", Pnoun, [TERMPH_VAL $ make_pnoun "mars"]), + ("mercury", Pnoun, [TERMPH_VAL $ make_pnoun "mercury"]), + ("mimas", Pnoun, [TERMPH_VAL $ make_pnoun "mimas"]), + ("miranda", Pnoun, [TERMPH_VAL $ make_pnoun "miranda"]), + ("neptune", Pnoun, [TERMPH_VAL $ make_pnoun "neptune"]), + ("nereid", Pnoun, [TERMPH_VAL $ make_pnoun "nereid"]), + ("oberon", Pnoun, [TERMPH_VAL $ make_pnoun "oberon"]), + ("phobos", Pnoun, [TERMPH_VAL $ make_pnoun "phobos"]), + ("phoebe", Pnoun, [TERMPH_VAL $ make_pnoun "phoebe"]), + ("pluto", Pnoun, [TERMPH_VAL $ make_pnoun "pluto"]), + ("rhea", Pnoun, [TERMPH_VAL $ make_pnoun "rhea"]), + ("saturn", Pnoun, [TERMPH_VAL $ make_pnoun "saturn"]), + ("saturnfirst", Pnoun, [TERMPH_VAL $ make_pnoun "saturnfirst"]), + ("sol", Pnoun, [TERMPH_VAL $ make_pnoun "sol"]), + ("tethys", Pnoun, [TERMPH_VAL $ make_pnoun "tethys"]), + ("titan", Pnoun, [TERMPH_VAL $ make_pnoun "titan"]), + ("titania", Pnoun, [TERMPH_VAL $ make_pnoun "titania"]), + ("triton", Pnoun, [TERMPH_VAL $ make_pnoun "triton"]), + ("umbriel", Pnoun, [TERMPH_VAL $ make_pnoun "umbriel"]), + ("uranus", Pnoun, [TERMPH_VAL $ make_pnoun "uranus"]), + ("venus", Pnoun, [TERMPH_VAL $ make_pnoun "venus"]), + ("discover", Transvb, [VERB_VAL ("discover_ev")]), + ("discovers", Transvb, [VERB_VAL ("discover_ev")]), + ("discovered", Transvb, [VERB_VAL ("discover_ev")]), + ("orbit", Transvb, [VERB_VAL ("orbit_ev")]), + ("orbited", Transvb, [VERB_VAL ("orbit_ev")]), + ("orbits", Transvb, [VERB_VAL ("orbit_ev")]), + ("is", Linkingvb, [LINKINGVB_VAL id]), + ("was", Linkingvb, [LINKINGVB_VAL id]), + ("are", Linkingvb, [LINKINGVB_VAL id]), + ("were", Linkingvb, [LINKINGVB_VAL id]), + ("that", Relpron, [RELPRON_VAL $ that]), + ("who", Relpron, [RELPRON_VAL $ that]), + ("which", Relpron, [RELPRON_VAL $ that]), + ("and", Verbphjoin,[VBPHJOIN_VAL $ nounand]), + ("or", Verbphjoin,[VBPHJOIN_VAL $ nounor]), + ("and", Nounjoin, [NOUNJOIN_VAL $ nounand]), + ("or", Nounjoin, [NOUNJOIN_VAL $ nounor]), + ("and", Termphjoin,[TERMPHJOIN_VAL termand]), + ("or", Termphjoin,[TERMPHJOIN_VAL termor]), + ("and", Sentjoin, [SENTJOIN_VAL $ sand]), + ("does", Quest1, [QUEST1_VAL $ yesno]), + ("did", Quest1 , [QUEST1_VAL $ yesno]), + ("do", Quest1, [QUEST1_VAL $ yesno]), + ("what", Quest2, [QUEST2_VAL $ what]), + ("who", Quest2, [QUEST2_VAL who]), + ("which", Quest3, [QUEST3_VAL which]), + ("what", Quest3, [QUEST3_VAL which]), + ("how", Quest4a, [QUEST3_VAL $ how_many]), + ("many", Quest4b, [QUEST3_VAL $ how_many]), + ("human", Cnoun, meaning_of nouncla "person" Nouncla), + ("discoverer", Cnoun, meaning_of nouncla "person who discovered something" Nouncla), + ("discoverers", Cnoun, meaning_of nouncla "person who discovered something" Nouncla), + ("humans", Cnoun, meaning_of nouncla "person" Nouncla), + ("people", Cnoun, meaning_of nouncla "person" Nouncla), + ("orbit", Intransvb,meaning_of verbph "orbit something" Verbph), + ("orbits", Intransvb,meaning_of verbph "orbit something" Verbph), + ("anyone", Indefpron,meaning_of detph "a person" Detph), + ("anything", Indefpron,meaning_of detph "a thing" Detph), + ("anybody", Indefpron,meaning_of detph "a person" Detph), + ("someone", Indefpron,meaning_of detph "a person" Detph), + ("something", Indefpron,meaning_of detph "a thing" Detph), + ("somebody", Indefpron,meaning_of detph "a person" Detph), + ("everyone", Indefpron,meaning_of detph "every person" Detph), + ("everything", Indefpron,meaning_of detph "every thing" Detph), + ("everybody", Indefpron,meaning_of detph "every person" Detph), + ("nobody", Indefpron,meaning_of detph "no person" Detph), + ("noone", Indefpron,meaning_of detph "no person" Detph), + --Begin prepositional stuff-- + ("with", Prepn, [PREPN_VAL ["with_implement"]]), + ("in", Prepn, [PREPN_VAL ["location","year"]]), + ("at", Prepn, [PREPN_VAL ["location"]]), + ("by", Prepn, [PREPN_VAL ["subject"]]), + --Begin telescope stuff-- + ("telescope", Cnoun, [NOUNCLA_VAL telescope]), + ("telescopes", Cnoun, [NOUNCLA_VAL telescope]), + ("cassegrain_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "cassegrain_telescope"]), + ("hooker_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "hooker_telescope"]), + ("schmidt_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "schmidt_telescope"]), + ("subaru_reflector_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "subaru_reflector_telescope"]), + ("canada-france-hawaii_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "canada-france-hawaii_telescope"]), + ("aerial_telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "aerial_telescope_1"]), + ("bruce_astrograph", Pnoun,[TERMPH_VAL $ make_pnoun "bruce_astrograph"]), + ("telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "telescope_1"]), + ("hale_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "hale_telescope"]), + ("hubble_space_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "hubble_space_telescope"]), + ("blanco_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "blanco_telescope"]), + ("crossley_reflector_telescope", Pnoun,[TERMPH_VAL $ make_pnoun "crossley_reflector_telescope"]), + ("refractor_telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "refractor_telescope_1"]), + ("refractor_telescope_2", Pnoun,[TERMPH_VAL $ make_pnoun "refractor_telescope_2"]), + ("refractor_telescope_3", Pnoun,[TERMPH_VAL $ make_pnoun "refractor_telescope_3"]), + ("refractor_telescope_4", Pnoun,[TERMPH_VAL $ make_pnoun "refractor_telescope_4"]), + ("reflector_telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "reflector_telescope_1"]), + ("reflector_telescope_2", Pnoun,[TERMPH_VAL $ make_pnoun "reflector_telescope_2"]), + ("reflector_telescope_3", Pnoun,[TERMPH_VAL $ make_pnoun "reflector_telescope_3"]), + ("reflector_telescope_4", Pnoun,[TERMPH_VAL $ make_pnoun "reflector_telescope_4"]), + ("ground_based_telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "ground_based_telescope_1"]), + ("ground_based_telescope_2", Pnoun,[TERMPH_VAL $ make_pnoun "ground_based_telescope_2"]), + ("ground_based_telescope_3", Pnoun,[TERMPH_VAL $ make_pnoun "ground_based_telescope_3"]), + ("galilean_telescope_1", Pnoun,[TERMPH_VAL $ make_pnoun "galilean_telescope_1"]), + --Begin science team stuff + ("team", Cnoun, [NOUNCLA_VAL science_team]), + ("teams", Cnoun, [NOUNCLA_VAL science_team]), + ("voyager_science_team", Pnoun,[TERMPH_VAL $ make_pnoun "voyager_science_team"]), + ("cassini_imaging_science_team", Pnoun,[TERMPH_VAL $ make_pnoun "cassini_imaging_science_team"]), + ("science_team_1", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_1"]), + ("science_team_2", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_2"]), + ("science_team_3", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_3"]), + ("science_team_4", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_4"]), + ("science_team_5", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_5"]), + ("science_team_6", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_6"]), + ("science_team_7", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_7"]), + ("science_team_8", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_8"]), + ("science_team_9", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_9"]), + ("science_team_10", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_10"]), + ("science_team_11", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_11"]), + ("science_team_12", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_12"]), + ("science_team_13", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_13"]), + ("science_team_14", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_14"]), + ("science_team_15", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_15"]), + ("science_team_16", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_16"]), + ("science_team_17", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_17"]), + ("science_team_18", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_18"]), + ("science_team_19", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_19"]), + ("science_team_20", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_20"]), + ("science_team_21", Pnoun,[TERMPH_VAL $ make_pnoun "science_team_21"]), + --Begin new people stuff-- + ("larson", Pnoun, [TERMPH_VAL $ make_pnoun "larson"]), + ("fountain", Pnoun, [TERMPH_VAL $ make_pnoun "fountain"]), + ("scotti", Pnoun, [TERMPH_VAL $ make_pnoun "scotti"]), + ("spahr", Pnoun, [TERMPH_VAL $ make_pnoun "spahr"]), + ("mcmillan", Pnoun, [TERMPH_VAL $ make_pnoun "mcmillan"]), + ("montani", Pnoun, [TERMPH_VAL $ make_pnoun "montani"]), + ("gleason", Pnoun, [TERMPH_VAL $ make_pnoun "gleason"]), + ("gehrels", Pnoun, [TERMPH_VAL $ make_pnoun "gehrels"]), + ("roemer", Pnoun, [TERMPH_VAL $ make_pnoun "roemer"]), + ("sheppard", Pnoun, [TERMPH_VAL $ make_pnoun "sheppard"]), + ("jewitt", Pnoun, [TERMPH_VAL $ make_pnoun "jewitt"]), + ("fernandez", Pnoun, [TERMPH_VAL $ make_pnoun "fernandez"]), + ("magnier", Pnoun, [TERMPH_VAL $ make_pnoun "magnier"]), + ("kleyna", Pnoun, [TERMPH_VAL $ make_pnoun "kleyna"]), + ("gladman", Pnoun, [TERMPH_VAL $ make_pnoun "gladman"]), + ("kavelaars", Pnoun, [TERMPH_VAL $ make_pnoun "kavelaars"]), + ("petit", Pnoun, [TERMPH_VAL $ make_pnoun "petit"]), + ("allen", Pnoun, [TERMPH_VAL $ make_pnoun "allen"]), + ("laques", Pnoun, [TERMPH_VAL $ make_pnoun "laques"]), + ("lecacheux", Pnoun, [TERMPH_VAL $ make_pnoun "lecacheux"]), + ("smith", Pnoun, [TERMPH_VAL $ make_pnoun "smith"]), + ("reitsema", Pnoun, [TERMPH_VAL $ make_pnoun "reitsema"]), + ("pascu", Pnoun, [TERMPH_VAL $ make_pnoun "pascu"]), + ("seidelmann", Pnoun, [TERMPH_VAL $ make_pnoun "seidelmann"]), + ("baum", Pnoun, [TERMPH_VAL $ make_pnoun "baum"]), + ("currie", Pnoun, [TERMPH_VAL $ make_pnoun "currie"]), + ("showalter", Pnoun, [TERMPH_VAL $ make_pnoun "showalter"]), + ("scholl", Pnoun, [TERMPH_VAL $ make_pnoun "scholl"]), + ("holman", Pnoun, [TERMPH_VAL $ make_pnoun "holman"]), + ("marsden", Pnoun, [TERMPH_VAL $ make_pnoun "marsden"]), + ("burns", Pnoun, [TERMPH_VAL $ make_pnoun "burns"]), + ("milisavljevic", Pnoun, [TERMPH_VAL $ make_pnoun "milisavljevic"]), + ("grav", Pnoun, [TERMPH_VAL $ make_pnoun "grav"]), + ("karkoschka", Pnoun, [TERMPH_VAL $ make_pnoun "karkoschka"]), + ("lissauer", Pnoun, [TERMPH_VAL $ make_pnoun "lissauer"]), + ("fraser", Pnoun, [TERMPH_VAL $ make_pnoun "fraser"]), + ("christy", Pnoun, [TERMPH_VAL $ make_pnoun "christy"]), + ("weaver", Pnoun, [TERMPH_VAL $ make_pnoun "weaver"]), + ("stern", Pnoun, [TERMPH_VAL $ make_pnoun "stern"]), + ("mutchler", Pnoun, [TERMPH_VAL $ make_pnoun "mutchler"]), + ("steffl", Pnoun, [TERMPH_VAL $ make_pnoun "steffl"]), + ("buie", Pnoun, [TERMPH_VAL $ make_pnoun "buie"]), + ("merline", Pnoun, [TERMPH_VAL $ make_pnoun "merline"]), + ("spencer", Pnoun, [TERMPH_VAL $ make_pnoun "spencer"]), + ("young_e_f", Pnoun, [TERMPH_VAL $ make_pnoun "young_e_f"]), + ("young_l_a", Pnoun, [TERMPH_VAL $ make_pnoun "young_l_a"]), + ("hamilton", Pnoun, [TERMPH_VAL $ make_pnoun "hamilton"]), + ("soummer", Pnoun, [TERMPH_VAL $ make_pnoun "soummer"]), + ("throop", Pnoun, [TERMPH_VAL $ make_pnoun "throop"]), + --Begin new spacecraft stuff-- + ("spacecraft", Cnoun, [NOUNCLA_VAL spacecraft]), + ("spacecrafts", Cnoun, [NOUNCLA_VAL spacecraft]), + ("voyager_1", Pnoun, [TERMPH_VAL $ make_pnoun "voyager_1"]), + ("voyager_2", Pnoun, [TERMPH_VAL $ make_pnoun "voyager_2"]), + ("cassini", Pnoun, [TERMPH_VAL $ make_pnoun "voyager_2"]), + --Begin new places stuff-- + ("place", Cnoun, [NOUNCLA_VAL place]), + ("places", Cnoun, [NOUNCLA_VAL place]), + ("mt_hopkins", Pnoun, [TERMPH_VAL $ make_pnoun "mt_hopkins"]), + ("fort_davis", Pnoun, [TERMPH_VAL $ make_pnoun "fort_davis"]), + ("cerro_tololo", Pnoun, [TERMPH_VAL $ make_pnoun "cerro_tololo"]), + ("us_naval_observatory", Pnoun, [TERMPH_VAL $ make_pnoun "us_naval_observatory"]), + ("padua", Pnoun, [TERMPH_VAL $ make_pnoun "padua"]), + ("mt_hamilton", Pnoun, [TERMPH_VAL $ make_pnoun "mt_hamilton"]), + ("greenwich", Pnoun, [TERMPH_VAL $ make_pnoun "greenwich"]), + ("mt_wilson", Pnoun, [TERMPH_VAL $ make_pnoun "mt_wilson"]), + ("mt_palomar", Pnoun, [TERMPH_VAL $ make_pnoun "mt_palomar"]), + ("kitt_peak", Pnoun, [TERMPH_VAL $ make_pnoun "kitt_peak"]), + ("mauna_kea", Pnoun, [TERMPH_VAL $ make_pnoun "mauna_kea"]), + ("slough", Pnoun, [TERMPH_VAL $ make_pnoun "slough"]), + ("paris", Pnoun, [TERMPH_VAL $ make_pnoun "paris"]), + ("the_hague", Pnoun, [TERMPH_VAL $ make_pnoun "the_hague"]), + ("cambridge", Pnoun, [TERMPH_VAL $ make_pnoun "cambridge"]), + ("liverpool", Pnoun, [TERMPH_VAL $ make_pnoun "liverpool"]), + ("arequipa", Pnoun, [TERMPH_VAL $ make_pnoun "arequipa"]), + ("pic_du_midi", Pnoun, [TERMPH_VAL $ make_pnoun "pic_du_midi"]), + ("flagstaff", Pnoun, [TERMPH_VAL $ make_pnoun "flagstaff"]), + ("la_silla", Pnoun, [TERMPH_VAL $ make_pnoun "la_silla"]), + --Begin new moons stuff-- + ("himalia", Pnoun, [TERMPH_VAL $ make_pnoun "himalia"]), + ("elara", Pnoun, [TERMPH_VAL $ make_pnoun "elara"]), + ("pasiphae", Pnoun, [TERMPH_VAL $ make_pnoun "pasiphae"]), + ("sinope", Pnoun, [TERMPH_VAL $ make_pnoun "sinope"]), + ("lysithea", Pnoun, [TERMPH_VAL $ make_pnoun "lysithea"]), + ("carme", Pnoun, [TERMPH_VAL $ make_pnoun "carme"]), + ("ananke", Pnoun, [TERMPH_VAL $ make_pnoun "ananke"]), + ("leda", Pnoun, [TERMPH_VAL $ make_pnoun "leda"]), + ("thebe", Pnoun, [TERMPH_VAL $ make_pnoun "thebe"]), + ("adrastea", Pnoun, [TERMPH_VAL $ make_pnoun "adrastea"]), + ("metis", Pnoun, [TERMPH_VAL $ make_pnoun "metis"]), + ("callirrhoe", Pnoun, [TERMPH_VAL $ make_pnoun "callirrhoe"]), + ("themisto", Pnoun, [TERMPH_VAL $ make_pnoun "themisto"]), + ("megaclite", Pnoun, [TERMPH_VAL $ make_pnoun "megaclite"]), + ("taygete", Pnoun, [TERMPH_VAL $ make_pnoun "taygete"]), + ("chaldene", Pnoun, [TERMPH_VAL $ make_pnoun "chaldene"]), + ("harpalyke", Pnoun, [TERMPH_VAL $ make_pnoun "harpalyke"]), + ("kalyke", Pnoun, [TERMPH_VAL $ make_pnoun "kalyke"]), + ("iocaste", Pnoun, [TERMPH_VAL $ make_pnoun "iocaste"]), + ("erinome", Pnoun, [TERMPH_VAL $ make_pnoun "erinome"]), + ("isonoe", Pnoun, [TERMPH_VAL $ make_pnoun "isonoe"]), + ("praxidike", Pnoun, [TERMPH_VAL $ make_pnoun "praxidike"]), + ("autonoe", Pnoun, [TERMPH_VAL $ make_pnoun "autonoe"]), + ("thyone", Pnoun, [TERMPH_VAL $ make_pnoun "thyone"]), + ("hermippe", Pnoun, [TERMPH_VAL $ make_pnoun "hermippe"]), + ("aitne", Pnoun, [TERMPH_VAL $ make_pnoun "aitne"]), + ("eurydome", Pnoun, [TERMPH_VAL $ make_pnoun "eurydome"]), + ("euanthe", Pnoun, [TERMPH_VAL $ make_pnoun "euanthe"]), + ("euporie", Pnoun, [TERMPH_VAL $ make_pnoun "euporie"]), + ("orthosie", Pnoun, [TERMPH_VAL $ make_pnoun "orthosie"]), + ("sponde", Pnoun, [TERMPH_VAL $ make_pnoun "sponde"]), + ("kale", Pnoun, [TERMPH_VAL $ make_pnoun "kale"]), + ("pasithee", Pnoun, [TERMPH_VAL $ make_pnoun "pasithee"]), + ("hegemone", Pnoun, [TERMPH_VAL $ make_pnoun "hegemone"]), + ("mneme", Pnoun, [TERMPH_VAL $ make_pnoun "mneme"]), + ("aoede", Pnoun, [TERMPH_VAL $ make_pnoun "aoede"]), + ("thelxinoe", Pnoun, [TERMPH_VAL $ make_pnoun "thelxinoe"]), + ("arche", Pnoun, [TERMPH_VAL $ make_pnoun "arche"]), + ("kallichore", Pnoun, [TERMPH_VAL $ make_pnoun "kallichore"]), + ("helike", Pnoun, [TERMPH_VAL $ make_pnoun "helike"]), + ("carpo", Pnoun, [TERMPH_VAL $ make_pnoun "carpo"]), + ("eukelade", Pnoun, [TERMPH_VAL $ make_pnoun "eukelade"]), + ("cyllene", Pnoun, [TERMPH_VAL $ make_pnoun "cyllene"]), + ("kore", Pnoun, [TERMPH_VAL $ make_pnoun "kore"]), + ("herse", Pnoun, [TERMPH_VAL $ make_pnoun "herse"]), + ("epimetheus", Pnoun, [TERMPH_VAL $ make_pnoun "epimetheus"]), + ("helene", Pnoun, [TERMPH_VAL $ make_pnoun "helene"]), + ("telesto", Pnoun, [TERMPH_VAL $ make_pnoun "telesto"]), + ("calypso", Pnoun, [TERMPH_VAL $ make_pnoun "calypso"]), + ("atlas", Pnoun, [TERMPH_VAL $ make_pnoun "atlas"]), + ("prometheus", Pnoun, [TERMPH_VAL $ make_pnoun "prometheus"]), + ("pandora", Pnoun, [TERMPH_VAL $ make_pnoun "pandora"]), + ("pan", Pnoun, [TERMPH_VAL $ make_pnoun "pan"]), + ("ymir", Pnoun, [TERMPH_VAL $ make_pnoun "ymir"]), + ("paaliaq", Pnoun, [TERMPH_VAL $ make_pnoun "paaliaq"]), + ("tarvos", Pnoun, [TERMPH_VAL $ make_pnoun "tarvos"]), + ("ijiraq", Pnoun, [TERMPH_VAL $ make_pnoun "ijiraq"]), + ("suttungr", Pnoun, [TERMPH_VAL $ make_pnoun "suttungr"]), + ("kiviuq", Pnoun, [TERMPH_VAL $ make_pnoun "kiviuq"]), + ("mundilfari", Pnoun, [TERMPH_VAL $ make_pnoun "mundilfari"]), + ("albiorix", Pnoun, [TERMPH_VAL $ make_pnoun "albiorix"]), + ("skathi", Pnoun, [TERMPH_VAL $ make_pnoun "skathi"]), + ("erriapus", Pnoun, [TERMPH_VAL $ make_pnoun "erriapus"]), + ("siarnaq", Pnoun, [TERMPH_VAL $ make_pnoun "siarnaq"]), + ("thrymr", Pnoun, [TERMPH_VAL $ make_pnoun "thrymr"]), + ("narvi", Pnoun, [TERMPH_VAL $ make_pnoun "narvi"]), + ("methone", Pnoun, [TERMPH_VAL $ make_pnoun "methone"]), + ("pallene", Pnoun, [TERMPH_VAL $ make_pnoun "pallene"]), + ("polydeuces", Pnoun, [TERMPH_VAL $ make_pnoun "polydeuces"]), + ("daphnis", Pnoun, [TERMPH_VAL $ make_pnoun "daphnis"]), + ("aegir", Pnoun, [TERMPH_VAL $ make_pnoun "aegir"]), + ("bebhionn", Pnoun, [TERMPH_VAL $ make_pnoun "bebhionn"]), + ("bergelmir", Pnoun, [TERMPH_VAL $ make_pnoun "bergelmir"]), + ("bestla", Pnoun, [TERMPH_VAL $ make_pnoun "bestla"]), + ("farbauti", Pnoun, [TERMPH_VAL $ make_pnoun "farbauti"]), + ("fenrir", Pnoun, [TERMPH_VAL $ make_pnoun "fenrir"]), + ("fornjot", Pnoun, [TERMPH_VAL $ make_pnoun "fornjot"]), + ("hati", Pnoun, [TERMPH_VAL $ make_pnoun "hati"]), + ("hyrrokkin", Pnoun, [TERMPH_VAL $ make_pnoun "hyrrokkin"]), + ("kari", Pnoun, [TERMPH_VAL $ make_pnoun "kari"]), + ("loge", Pnoun, [TERMPH_VAL $ make_pnoun "loge"]), + ("skoll", Pnoun, [TERMPH_VAL $ make_pnoun "skoll"]), + ("surtur", Pnoun, [TERMPH_VAL $ make_pnoun "surtur"]), + ("anthe", Pnoun, [TERMPH_VAL $ make_pnoun "anthe"]), + ("jarnsaxa", Pnoun, [TERMPH_VAL $ make_pnoun "jarnsaxa"]), + ("greip", Pnoun, [TERMPH_VAL $ make_pnoun "greip"]), + ("tarqeq", Pnoun, [TERMPH_VAL $ make_pnoun "tarqeq"]), + ("aegaeon", Pnoun, [TERMPH_VAL $ make_pnoun "aegaeon"]), + ("cordelia", Pnoun, [TERMPH_VAL $ make_pnoun "cordelia"]), + ("ophelia", Pnoun, [TERMPH_VAL $ make_pnoun "ophelia"]), + ("bianca", Pnoun, [TERMPH_VAL $ make_pnoun "bianca"]), + ("cressida", Pnoun, [TERMPH_VAL $ make_pnoun "cressida"]), + ("desdemona", Pnoun, [TERMPH_VAL $ make_pnoun "desdemona"]), + ("juliet", Pnoun, [TERMPH_VAL $ make_pnoun "juliet"]), + ("portia", Pnoun, [TERMPH_VAL $ make_pnoun "portia"]), + ("rosalind", Pnoun, [TERMPH_VAL $ make_pnoun "rosalind"]), + ("belinda", Pnoun, [TERMPH_VAL $ make_pnoun "belinda"]), + ("puck", Pnoun, [TERMPH_VAL $ make_pnoun "puck"]), + ("caliban", Pnoun, [TERMPH_VAL $ make_pnoun "caliban"]), + ("sycorax", Pnoun, [TERMPH_VAL $ make_pnoun "sycorax"]), + ("prospero", Pnoun, [TERMPH_VAL $ make_pnoun "prospero"]), + ("setebos", Pnoun, [TERMPH_VAL $ make_pnoun "setebos"]), + ("stephano", Pnoun, [TERMPH_VAL $ make_pnoun "stephano"]), + ("trinculo", Pnoun, [TERMPH_VAL $ make_pnoun "trinculo"]), + ("francisco", Pnoun, [TERMPH_VAL $ make_pnoun "francisco"]), + ("margaret", Pnoun, [TERMPH_VAL $ make_pnoun "margaret"]), + ("ferdinand", Pnoun, [TERMPH_VAL $ make_pnoun "ferdinand"]), + ("perdita", Pnoun, [TERMPH_VAL $ make_pnoun "perdita"]), + ("mab", Pnoun, [TERMPH_VAL $ make_pnoun "mab"]), + ("cupid", Pnoun, [TERMPH_VAL $ make_pnoun "cupid"]), + ("triton", Pnoun, [TERMPH_VAL $ make_pnoun "triton"]), + ("naiad", Pnoun, [TERMPH_VAL $ make_pnoun "naiad"]), + ("thalassa", Pnoun, [TERMPH_VAL $ make_pnoun "thalassa"]), + ("despina", Pnoun, [TERMPH_VAL $ make_pnoun "despina"]), + ("galatea", Pnoun, [TERMPH_VAL $ make_pnoun "galatea"]), + ("larissa", Pnoun, [TERMPH_VAL $ make_pnoun "larissa"]), + ("proteus", Pnoun, [TERMPH_VAL $ make_pnoun "proteus"]), + ("halimede", Pnoun, [TERMPH_VAL $ make_pnoun "halimede"]), + ("psamathe", Pnoun, [TERMPH_VAL $ make_pnoun "psamathe"]), + ("sao", Pnoun, [TERMPH_VAL $ make_pnoun "sao"]), + ("laomedeia", Pnoun, [TERMPH_VAL $ make_pnoun "laomedeia"]), + ("neso", Pnoun, [TERMPH_VAL $ make_pnoun "neso"]), + ("nix", Pnoun, [TERMPH_VAL $ make_pnoun "nix"]), + ("hydra", Pnoun, [TERMPH_VAL $ make_pnoun "hydra"]), + ("kerberos", Pnoun, [TERMPH_VAL $ make_pnoun "kerberos"]), + ("styx", Pnoun, [TERMPH_VAL $ make_pnoun "styx"]) + + ] ++ list_of_years + +{-Major hack: Since the basic unit that the parser understands is strings (not characters), we have to manually add all years that we can query into the dictionary... +That is, we can't make the parser understand "1984" and "1245" by having it recognize four numbers, instead it must recognize the entire string of numbers at once +as a terminal (i.e., "1984" would be a terminal, not a non-terminal composed of "1", "9", "8", and "4"). Therefore, all possible strings must be added to the dictionary so that the parser can match them. +-} + +list_of_years = map (\n -> (show n, Year, [YEAR_VAL n])) $ concat [[1000 + x, 2000 + x] | x <- [0..999]] + +--test1 p p_ inp = do putStr $ render80 $ format{-Atts p_-} $ snd $ unState (p T0 [] ((1,[]),words inp) ([],[])) [] +test p input = unState (p ((1,[]),input) ([],[])) [] + + + +main i = formatAttsFinalAlt Question ((length (words i))+1) $ snd $ test (question T0 []) (words i) + + +findStart st ((s,ss):rest) | s == st = [(s,ss)] + | otherwise = findStart st rest +findStart st [] = [] + +input = words i1 + +i1 = "which moons that were discovered by hall orbit mars" -- OK +i2 = "who discovered a moon that orbits mars" -- OK +i3 = "did hall discover every moon that orbits mars" -- OK +i4 = "how many moons were discovered by hall and kuiper" -- OK +i5 = "how many moons were discovered by hall or kuiper" -- OK +i6 = "every moon was discovered by a person" -- OK +i7 = "which planets are orbited by a moon that was discovered by galileo" -- OK +i8 = "which moons were discovered by nobody" -- OK +i9 = "is every planet orbited by a moon" -- Broken in original too +i10 = "which planets are orbited by two moons" -- OK +i11 = "who was the discoverer of phobos" -- Broken in original too +i12 = "hall discovered a moon that orbits mars" -- OK +i13 = "which moons that orbit mars were discovered by hall" -- OK +i14 = "every moon orbits every planet" -- OK +i15 = "every planet is orbited by a moon" -- OK +i16 = "a planet is orbited by a moon" -- OK +i17 = "does phobos orbit mars" -- OK +-- +i18 = "did hall discover deimos or phobos and miranda" -- Broken in original too +i19 = "did hall discover deimos or phobos and miranda or deimos and deimos" -- Broken in original too
+ TypeAg2.hs view
@@ -0,0 +1,192 @@+module TypeAg2 where + +import System.IO.Unsafe + +data AttValue = VAL {getAVAL :: Int} + | MaxVal {getAVAL :: Int} + | SubVal {getAVAL :: Int} + | RepVal {getAVAL :: Int} + | Res {getRVAL :: DisplayTree} + | B_OP {getB_OP :: (Int -> Int -> Int)} + | U_OP {getU_OP :: (Int -> Int)} + | SENT_VAL {getSV :: IO Bool} + | ErrorVal {getEVAL :: String} + | NOUNCLA_VAL {getAVALS :: IO ES} + | VERBPH_VAL {getAVALS :: IO ES} + | ADJ_VAL {getAVALS :: IO ES} + | TERMPH_VAL {getTVAL :: (IO ES -> IO Bool)} + | DET_VAL {getDVAL :: (IO ES -> IO ES -> IO Bool)} + | VERB_VAL {getBR :: Relation} + | RELPRON_VAL {getRELVAL :: (IO ES -> IO ES -> IO ES)} + | NOUNJOIN_VAL {getNJVAL :: (IO ES -> IO ES -> IO ES)} + | VBPHJOIN_VAL {getVJVAL :: (IO ES -> IO ES -> IO ES)} + | TERMPHJOIN_VAL {getTJVAL :: ((IO ES -> IO Bool) -> (IO ES -> IO Bool) -> (IO ES -> IO Bool)) } + | PREP_VAL {getPREPVAL :: ([([String], IO ES -> IO Bool)])} -- used in "hall discovered phobos with a telescope" as "with". + | PREPN_VAL {getPREPNVAL :: [String]} --used for mapping between prepositions and their corresponding identifiers in the database. I.e., "in" -> ["location", "year"] + | PREPPH_VAL {getPREPPHVAL :: ([String], IO ES -> IO Bool)} + | LINKINGVB_VAL {getLINKVAL :: (IO ES -> IO ES)} + | SENTJOIN_VAL {getSJVAL :: (IO Bool -> IO Bool -> IO Bool)} + | DOT_VAL {getDOTVAL :: IO String} + | QM_VAL {getQMVAL :: IO String} + | QUEST_VAL {getQUVAL :: IO String} + | QUEST1_VAL {getQU1VAL :: (IO Bool -> IO String)} + | QUEST2_VAL {getQU2VAL :: (IO ES -> IO String)} + | QUEST3_VAL {getQU3VAL :: (IO ES -> IO ES -> IO String)} + | YEAR_VAL {getYEARVAL :: Int} + +-- | RESULT [sys_message] +data MemoL = Start | Tree | Num | Emp | ALeaf String | Expr | Op | ET + | Pnoun|Cnoun|Adj|Det|Intransvb|Transvb|Linkingvb|Relpron|Termphjoin|Verbphjoin|Nounjoin|Preps|Prepph|Prepn|Indefpron|Sentjoin|Quest1|Quest2|Quest3|Quest4a|Quest4b + | Snouncla|Relnouncla|Nouncla|Adjs|Detph|Transvbph|Verbph|Termph|Jointermph|Joinvbph|Sent|Two_sent|Question|Quest4|Query|Year + deriving (Eq,Ord,Show) + +data Id = O0|S0 |S1|S2|S3|S4|S5|S6|S7|S8|S9|T0|T1 | T2 | T3 |T4 | N1| N2 | N3 | E0 |E1 |E2 | O1| LHS deriving (Eq,Ord,Show, Enum) + -- basic IDs for identifying each NT + +{- + +attFunc + = [ + (VAL,getAVAL), (MaxVal,getAVAL), (SubVal,getAVAL), (RepVal,getAVAL), (Res,getRVAL), (B_OP,getB_OP),(U_OP,getU_OP),(SENT_VAL,getSV),(ErrorVal,getEVAL), + (NOUNCLA_VAL,getAVALS),(VERBPH_VAL,getAVALS),(ADJ_VAL,getAVALS),(TERMPH_VAL,getTVAL),(DET_VAL,getDVAL),(VERB_VAL,getBR),(RELPRON_VAL,getRELVAL),(NOUNJOIN_VAL,getNJVAL), + (VBPHJOIN_VAL,getVJVAL),(TERMPHJOIN_VAL,getTJVAL),(PREP_VAL,getPREPVAL),(LINKINGVB_VAL,getLINKVAL),(SENTJOIN_VAL,getSJVAL),(DOT_VAL,getDOTVAL),(QM_VAL,getQMVAL),(QUEST1_VAL,getQU1VAL), + (QUEST2_VAL,getQU2VAL),(QUEST3_VAL,getQU3VAL) + ] +-} +type Entity = String +type Entityset = [Entity] +type ES = Entityset -- [Int] +--type Bin_Rel = [(Entity,Entity)] -- [(Int, Int)] +--type Relation = (ES -> Bool) -> ES +type Relation = String + +data DisplayTree = B [DisplayTree] + | N Int + deriving (Show, Eq) + + +--instance Show AttValue where + +showio :: AttValue -> IO String +showio (VAL j) = return $ "VAL " ++ show j +showio (MaxVal j) = return $ "MaxVal " ++ show j +showio (SubVal j) = return $ "SubVal " ++ show j +showio (RepVal j) = return $ "RepVal " ++ show j +showio (Res j) = return $ "Tree: " ++ show j +showio (B_OP j) = return $ "B_OP" +showio (U_OP j) = return $ "U_OP" +showio (SENT_VAL j) = j >>= return . show +showio (ErrorVal j) = return j +showio (NOUNCLA_VAL j) = j >>= return . (++) "NOUNCLA_VAL " . unwords +showio (VERBPH_VAL j) = j >>= return . (++) "VERBPH_VAL " . unwords +showio (ADJ_VAL j) = j >>= return . (++) "ADJ_VAL " . unwords +showio (TERMPH_VAL j) = return "TERMPH_VAL " +showio (DET_VAL j) = return "DET_VAL " +showio (VERB_VAL j) = return $ "VERB_VAL " ++ j +showio (RELPRON_VAL j) = return "RELPRON_VAL " +showio (NOUNJOIN_VAL j) = return "NOUNJOIN_VAL " +showio (VBPHJOIN_VAL j) = return "VBPHJOIN_VAL " +showio (TERMPHJOIN_VAL j) = return "TERMPHJOIN_VAL " +showio (PREP_VAL j) = return "PREP_VAL " +showio (LINKINGVB_VAL j) = return "LINKINGVB_VAL " +showio (SENTJOIN_VAL j) = return "SENTJOIN_VAL " +showio (DOT_VAL j) = j +showio (QM_VAL j) = j +showio (QUEST_VAL j) = j +showio (QUEST1_VAL j) = return "QUEST1_VAL" +showio (QUEST2_VAL j) = return "QUEST2_VAL" +showio (QUEST3_VAL j) = return "SENTJOIN_VAL" + +instance Eq AttValue where + (VAL j) == (VAL j') = True + (MaxVal j) == (MaxVal j') = True + (SubVal j) == (SubVal j') = True + (RepVal j) == (RepVal j') = True + (Res j) == (Res j') = True + (B_OP j) == (B_OP j') = True + (U_OP j) == (U_OP j') = True + (SENT_VAL j) == (SENT_VAL j') = True + (NOUNCLA_VAL j) == (NOUNCLA_VAL j') = True + (VERBPH_VAL j) == (VERBPH_VAL j') = True + (ADJ_VAL j) == (ADJ_VAL j') = True + (TERMPH_VAL j) == (TERMPH_VAL j') = True + (DET_VAL j) == (DET_VAL j') = True + (VERB_VAL j) == (VERB_VAL j') = True + (RELPRON_VAL j) == (RELPRON_VAL j') = True + (NOUNJOIN_VAL j) == (NOUNJOIN_VAL j') = True + (VBPHJOIN_VAL j) == (VBPHJOIN_VAL j') = True + (TERMPHJOIN_VAL j) == (TERMPHJOIN_VAL j') = True + (LINKINGVB_VAL j) == (LINKINGVB_VAL j') = True + (SENTJOIN_VAL j) == (SENTJOIN_VAL j') = True + (DOT_VAL j) == (DOT_VAL j') = True + (QM_VAL j) == (QM_VAL j') = True + (QUEST_VAL j) == (QUEST_VAL j') = True + (QUEST1_VAL j) == (QUEST1_VAL j') = True + (QUEST2_VAL j) == (QUEST2_VAL j') = True + (QUEST3_VAL j) == (QUEST3_VAL j') = True + (PREP_VAL s1) == (PREP_VAL s) = True + (PREPN_VAL s1) == (PREPN_VAL s) = True + (PREPPH_VAL s1) == (PREPPH_VAL s) = True + (YEAR_VAL s1) == (YEAR_VAL s) = True + _ == _ = False + + + + + + +--------- *********************** -------------- +-- needs to be simplified -- +setAtt (MaxVal s1) (MaxVal s) = [MaxVal s] +setAtt (MaxVal s1) (SubVal s) = [MaxVal s] +setAtt (MaxVal s1) (RepVal s) = [MaxVal s] +setAtt (MaxVal s1) (VAL s) = [MaxVal s] +setAtt (MaxVal s1) (ErrorVal s) = [ErrorVal s] + +setAtt (SubVal s1) (MaxVal s) = [SubVal s] +setAtt (SubVal s1) (SubVal s) = [SubVal s] +setAtt (SubVal s1) (RepVal s) = [SubVal s] +setAtt (SubVal s1) (VAL s) = [SubVal s] +setAtt (SubVal s1) (ErrorVal s) = [ErrorVal s] + +setAtt (RepVal s1) (MaxVal s) = [RepVal s] +setAtt (RepVal s1) (SubVal s) = [RepVal s] +setAtt (RepVal s1) (RepVal s) = [RepVal s] +setAtt (RepVal s1) (VAL s) = [RepVal s] +setAtt (RepVal s1) (ErrorVal s) = [ErrorVal s] + +setAtt (VAL s1) (VAL s) = [VAL s] +setAtt (VAL s1) (MaxVal s) = [VAL s] +setAtt (VAL s1) (SubVal s) = [VAL s] +setAtt (VAL s1) (RepVal s) = [VAL s] +setAtt (VAL s1) (ErrorVal s) = [ErrorVal s] + + +setAtt (Res s1) (Res s) = [Res s] +setAtt (Res s1) (ErrorVal s) = [ErrorVal s] +setAtt (ErrorVal s1) (ErrorVal s) = [ErrorVal s] + +setAtt (NOUNCLA_VAL s1) (NOUNCLA_VAL s) = [NOUNCLA_VAL s] +setAtt (ADJ_VAL s1) (ADJ_VAL s) = [ADJ_VAL s] +setAtt (TERMPH_VAL s1) (TERMPH_VAL s) = [TERMPH_VAL s] +setAtt (VERBPH_VAL s1) (VERBPH_VAL s) = [VERBPH_VAL s] +setAtt (SENT_VAL s1) (SENT_VAL s) = [SENT_VAL s] +setAtt (QUEST_VAL s1) (QUEST_VAL s) = [QUEST_VAL s] +setAtt (QUEST1_VAL s1) (QUEST1_VAL s) = [QUEST1_VAL s] +setAtt (QUEST2_VAL s1) (QUEST2_VAL s) = [QUEST2_VAL s] +setAtt (QUEST3_VAL s1) (QUEST3_VAL s) = [QUEST3_VAL s] + +setAtt (PREP_VAL s1) (PREP_VAL s) = [PREP_VAL s] +setAtt (PREPN_VAL s1) (PREPN_VAL s) = [PREPN_VAL s] +setAtt (PREPPH_VAL s1) (PREPPH_VAL s) = [PREPPH_VAL s] +setAtt (YEAR_VAL s1) (YEAR_VAL s) = [YEAR_VAL s] + + +--------- *********************** -------------- + + + + + + +
+ XSaiga.cabal view
@@ -0,0 +1,41 @@+-- Initial XSaiga.cabal generated by cabal init. For further +-- documentation, see http://haskell.org/cabal/users-guide/ + +name: XSaiga +version: 1.0.0.0 +synopsis: An implementation of a polynomial-time top-down parser suitable for NLP +-- description: +homepage: http://hafiz.myweb.cs.uwindsor.ca/proHome.html +license: BSD3 +license-file: LICENSE +author: Dr. Rahmatullah Hafiz, Dr. Richard Frost, Shane Peelar, and Eric Matthews +maintainer: peelar@uwindsor.ca +-- copyright: +category: Text +build-type: Simple +cabal-version: >=1.8 + +description: + This package contains an implementation of the X-SAIGA project's top-down polynomial-time parser which is suitable for natural language processing (NLP) + applications[1][2]. An example program "Solarman" is included which uses the parser to transform natural language queries about the solar system + into combinators which compute the correct answer. Solarman uses event-based triplestore semantics[3] as the basis for the computation, using either + a SPARQL endpoint or an in-program triplestore as the source of information. By default, the built-in triplestore is used. Solarman conforms + to the CGI interface and can be put on any conforming webserver. For more information about Solarman and the queries it supports, see [4]. + . + \[1] <http://cs.uwindsor.ca/~richard/PUBLICATIONS/PADL_10.pdf> + . + \[2] <http://cs.uwindsor.ca/~richard/PUBLICATIONS/PADL_08.pdf> + . + \[3] <http://cs.uwindsor.ca/~richard/PUBLICATIONS/ESWC_DEMO.pdf> + . + \[4] <http://speechweb2.cs.uwindsor.ca/solarman/demo_instore.html> + +Library + build-depends: base, pretty + exposed-modules: AGParser2, TypeAg2 + +Executable Solarman + main-is: Main.hs + other-modules: SolarmanTriplestore Getts + build-depends: base ==4.6.*, containers ==0.5.*, pretty ==1.1.*, cgi ==3001.1.*, rdf4h ==1.2.*, hsparql ==0.2.*, text ==0.11.* + extensions: DoAndIfThenElse