1 {-# LANGUAGE NoImplicitPrelude #-}
2 {-# LANGUAGE ScopedTypeVariables #-}
3 {-# LANGUAGE OverloadedStrings #-}
5 module Gargantext.Text.Parsers.Isidore where
7 import Gargantext.Prelude
8 import Database.HSparql.Connection
9 import Database.HSparql.QueryGenerator
11 -- import Data.RDF hiding (triple)
12 import Data.Text hiding (groupBy)
14 import Control.Lens hiding (contains)
15 import Data.ByteString.Lazy (ByteString)
16 import Prelude (String)
20 route = "https://isidore.science/sparql/"
22 selectQueryRaw' :: String -> String -> IO (Response ByteString)
23 selectQueryRaw' uri q = getWith opts uri
25 opts = defaults & header "Accept" .~ ["application/sparql-results+xml"]
26 & header "User-Agent" .~ ["gargantext-hsparql-client"]
27 & param "query" .~ [Data.Text.pack q]
29 isidoreGet :: Text -> IO ByteString
31 let s = createSelectQuery $ simpleSelect q
33 r <- selectQueryRaw' route s
34 putStrLn $ show $ r ^. responseStatus
35 pure $ r ^. responseBody
36 -- res <- selectQuery route $ simpleSelect q
39 simpleSelect :: Text -> Query SelectQuery
41 isidore <- prefix "isidore" (iriRef "http://www.rechercheisidore.fr/class")
42 rdf <- prefix "rdf" (iriRef "http://www.w3.org/1999/02/22-rdf-syntax-ns#")
43 dcterms <- prefix "dcterms" (iriRef "http://purl.org/dc/terms")
44 dc <- prefix "dc" (iriRef "http://purl.org/dc")
52 triple_ doc (rdf .:. "type") (isidore .:. "BibliographicalResource")
53 triple_ doc (dcterms .:. "title") title
54 --triple doc (dcterms .:. "date") date
55 --triple doc (dcterms .:. "source") source
56 triple doc (dc .:. "description") abstract
58 --filterExpr $ (.||.) (contains title q) (contains abstract q)
59 filterExpr_ (contains title q) -- (contains abstract q)