packages feed

XSaiga-1.7.0.0: driver/Main.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}

import qualified XSaiga.CGI as C

import qualified XSaiga.SolarmanTriplestore as App

import qualified XSaiga.TypeAg2 as TypeAg

import qualified Data.Text as T
import qualified Data.Text.IO as TIO

import System.IO

#ifdef ASTERIUS

import Asterius.Aeson
import Asterius.ByteString
import Asterius.Text
import Asterius.Types

import qualified Data.Text.Encoding as TE
import qualified Data.ByteString.Lazy as BL

foreign import javascript safe "get_query()" get_query :: IO JSString
foreign import javascript safe "update_results($1)" update_results :: JSString -> IO ()

#ifdef INSTORE
dataStore = Local.localData
#else
dataStore = C.asteriusRemoteData
#endif

main = do
    jsString <- get_query
    let input_query = textFromJSString $ jsString
    json_utf8 <- C.interpret' dataStore input_query
    update_results $ textToJSString (TE.decodeUtf8 $ BL.toStrict json_utf8)
#else

main = C.main

#endif

--main = TIO.putStrLn $ T.pack "Hello world"

--main = (C.runQuery $ TypeAg.get_members "moon") >>= (\x -> TIO.putStrLn $ T.intercalate "," (map fst x))

--main = putStrLn $ "test: " ++ (show $ map (TypeAg.getGetts . TypeAg.getQUVAL) $ App.parse "which vacuumous moon orbits a brown planet that was discovered by hall or galileo or a person that discovered a moon in 1877 with a telescope")

--main = putStrLn $ "test: " ++ (show $ map (TypeAg.getGetts . TypeAg.getQUVAL) $ App.parse "what did hall discover")

--main = putStrLn $ show $ TypeAg.getGetts $ TypeAg.get_members "moon"

--main = putStrLn $ show $ TypeAg.flatOptimize $ TypeAg.flattenGetts $ TypeAg.getGetts $ App.make_trans_active App.discover_rel $ (App.intersect_fdbr $ TypeAg.get_members "moon")

--main = do
--    let trees = map (show . snd) $ App.parseTree "which vacuumous moon orbits a brown planet that was discovered by hall or galileo or a person that discovered a moon in 1877 with a telescope"
--    mapM_ putStrLn trees