Commit 5a43e4bd authored by Alexandre Delanoë's avatar Alexandre Delanoë

[REFACT] uniforming hyperdata fields name

parent 51641162
......@@ -89,16 +89,16 @@ wosToCorpus :: Int -> FilePath -> IO ([(Int,Text)])
wosToCorpus limit path = do
files <- getFilesFromPath path
take limit
<$> map (\d -> let date' = fromJust $ _hyperdataDocument_publication_year d
title = fromJust $ _hyperdataDocument_title d
abstr = if (isJust $ _hyperdataDocument_abstract d)
then fromJust $ _hyperdataDocument_abstract d
<$> map (\d -> let date' = fromJust $ _hd_publication_year d
title = fromJust $ _hd_title d
abstr = if (isJust $ _hd_abstract d)
then fromJust $ _hd_abstract d
else ""
in (date', title <> " " <> abstr))
<$> concat
<$> mapConcurrently (\file ->
filter (\d -> (isJust $ _hyperdataDocument_publication_year d)
&& (isJust $ _hyperdataDocument_title d))
filter (\d -> (isJust $ _hd_publication_year d)
&& (isJust $ _hd_title d))
<$> parseFile WOS (path <> file) ) files
......
......@@ -132,11 +132,11 @@ csvToCorpus limit csv = DV.toList
-- | To transform a Wos nfile into a readable corpus
wosToCorpus :: Limit -> CorpusPath -> IO ([(Int,Text)])
wosToCorpus limit path = DL.take limit
. map (\d -> ((fromJust $_hyperdataDocument_publication_year d)
,(fromJust $_hyperdataDocument_title d) <> " " <> (fromJust $_hyperdataDocument_abstract d)))
. filter (\d -> (isJust $_hyperdataDocument_publication_year d)
&& (isJust $_hyperdataDocument_title d)
&& (isJust $_hyperdataDocument_abstract d))
. map (\d -> ((fromJust $_hd_publication_year d)
,(fromJust $_hd_title d) <> " " <> (fromJust $_hd_abstract d)))
. filter (\d -> (isJust $_hd_publication_year d)
&& (isJust $_hd_title d)
&& (isJust $_hd_abstract d))
. concat
<$> mapConcurrently (\idx -> parseFile WOS (path <> show(idx) <> ".txt")) [1..20]
......
......@@ -118,7 +118,7 @@ getCorpus cId lId nt' = do
) ns ngs
where
ng_hash b = sha $ List.foldl (\x y -> x<>y) "" $ List.sort $ Set.toList b
d_hash a b = sha $ (fromMaybe "" (_hyperdataDocument_uniqId $ _node_hyperdata a))
d_hash a b = sha $ (fromMaybe "" (_hd_uniqId $ _node_hyperdata a))
<> (ng_hash b)
pure $ Corpus (Map.elems r) (sha $ List.foldl (\a b -> a<>b) ""
......
......@@ -32,7 +32,7 @@ class UniqId a
instance UniqId HyperdataDocument
where
uniqId = hyperdataDocument_uniqId
uniqId = hd_uniqId
instance UniqId HyperdataContact
where
......
......@@ -347,8 +347,8 @@ instance ExtractNgramsT HyperdataContact
instance HasText HyperdataDocument
where
hasText h = catMaybes [ _hyperdataDocument_title h
, _hyperdataDocument_abstract h
hasText h = catMaybes [ _hd_title h
, _hd_abstract h
]
instance ExtractNgramsT HyperdataDocument
......@@ -364,15 +364,15 @@ instance ExtractNgramsT HyperdataDocument
extractNgramsT' lang' doc = do
let source = text2ngrams
$ maybe "Nothing" identity
$ _hyperdataDocument_source doc
$ _hd_source doc
institutes = map text2ngrams
$ maybe ["Nothing"] (map toSchoolName . (splitOn ", "))
$ _hyperdataDocument_institutes doc
$ _hd_institutes doc
authors = map text2ngrams
$ maybe ["Nothing"] (splitOn ", ")
$ _hyperdataDocument_authors doc
$ _hd_authors doc
terms' <- map text2ngrams
<$> map (intercalate " " . _terms_label)
......
......@@ -76,8 +76,8 @@ fav2bool ft = if (==) ft IsFav then True else False
text :: FacetDoc -> Text
text (FacetDoc _ _ _ h _ _) = title <> "" <> Text.take 100 abstr
where
title = maybe "" identity (_hyperdataDocument_title h)
abstr = maybe "" identity (_hyperdataDocument_abstract h)
title = maybe "" identity (_hd_title h)
abstr = maybe "" identity (_hd_abstract h)
---------------------------------------------------------------------------
......
......@@ -17,6 +17,7 @@ module Gargantext.Database.Admin.Types.Hyperdata
, module Gargantext.Database.Admin.Types.Hyperdata.Dashboard
, module Gargantext.Database.Admin.Types.Hyperdata.Document
, module Gargantext.Database.Admin.Types.Hyperdata.Folder
, module Gargantext.Database.Admin.Types.Hyperdata.Frame
, module Gargantext.Database.Admin.Types.Hyperdata.List
, module Gargantext.Database.Admin.Types.Hyperdata.Model
, module Gargantext.Database.Admin.Types.Hyperdata.Prelude
......@@ -30,6 +31,7 @@ import Gargantext.Database.Admin.Types.Hyperdata.Corpus
import Gargantext.Database.Admin.Types.Hyperdata.Dashboard
import Gargantext.Database.Admin.Types.Hyperdata.Document
import Gargantext.Database.Admin.Types.Hyperdata.Folder
import Gargantext.Database.Admin.Types.Hyperdata.Frame
import Gargantext.Database.Admin.Types.Hyperdata.List
import Gargantext.Database.Admin.Types.Hyperdata.Model
import Gargantext.Database.Admin.Types.Hyperdata.Prelude (Hyperdata)
......
......@@ -57,7 +57,6 @@ instance ToSchema CorpusField where
& mapped.schema.description ?~ "CorpusField"
& mapped.schema.example ?~ toJSON defaultCorpusField
------------------------------------------------------------------------
data HyperdataField a =
HyperdataField { _hf_type :: !CodeType
......@@ -89,84 +88,57 @@ instance (Typeable a, ToSchema a) => ToSchema (HyperdataField a) where
data HyperdataCorpus =
HyperdataCorpus { _hc_fields :: ![HyperdataField CorpusField] }
deriving (Generic)
------------------------------------------------------------------------
-- Instances
------------------------------------------------------------------------
instance Hyperdata HyperdataCorpus
$(deriveJSON (unPrefix "_hc_") ''HyperdataCorpus)
$(makeLenses ''HyperdataCorpus)
------------------------------------------------------------------------
data HyperdataFrame =
HyperdataFrame { base :: !Text
, frame_id :: !Text
}
deriving (Generic)
$(deriveJSON (unPrefix "") ''HyperdataFrame)
$(makeLenses ''HyperdataFrame)
instance Hyperdata HyperdataFrame
------------------------------------------------------------------------
corpusExample :: ByteString
corpusExample = "" -- TODO
defaultCorpus :: HyperdataCorpus
defaultCorpus = HyperdataCorpus [
HyperdataField JSON "Mandatory fields" (JsonField "Title" "Descr" "Bool query" "Authors")
, HyperdataField Markdown "Optional Text" (MarkdownField "# title\n## subtitle")
]
hyperdataCorpus :: HyperdataCorpus
hyperdataCorpus = case decode corpusExample of
Just hp -> hp
Nothing -> defaultCorpus
defaultHyperdataCorpus :: HyperdataCorpus
defaultHyperdataCorpus = defaultCorpus
instance Arbitrary HyperdataCorpus where
arbitrary = pure hyperdataCorpus -- TODO
defaultHyperdataCorpus =
HyperdataCorpus [ HyperdataField JSON
"Mandatory fields"
(JsonField "Title" "Descr" "Bool query" "Authors")
, HyperdataField Markdown
"Optional Text"
(MarkdownField "# title\n## subtitle")
]
------------------------------------------------------------------------
------------------------------------------------------------------------
data HyperdataAnnuaire = HyperdataAnnuaire { hyperdataAnnuaire_title :: !(Maybe Text)
, hyperdataAnnuaire_desc :: !(Maybe Text)
-- | Annuaire and Corpus should be the same
data HyperdataAnnuaire = HyperdataAnnuaire { _ha_title :: !(Maybe Text)
, _ha_desc :: !(Maybe Text)
} deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataAnnuaire_") ''HyperdataAnnuaire)
instance Hyperdata HyperdataAnnuaire
defaultHyperdataAnnuaire :: HyperdataAnnuaire
defaultHyperdataAnnuaire = HyperdataAnnuaire (Just "Title") (Just "Description")
instance Arbitrary HyperdataAnnuaire where
arbitrary = pure defaultHyperdataAnnuaire -- TODO
------------------------------------------------------------------------
-- Instances
------------------------------------------------------------------------
data HyperdataNotebook =
HyperdataNotebook { hn_preferences :: !(Maybe Text)}
deriving (Show, Generic)
instance Hyperdata HyperdataCorpus
instance Hyperdata HyperdataAnnuaire
$(makeLenses ''HyperdataCorpus)
$(makeLenses ''HyperdataAnnuaire)
$(deriveJSON (unPrefix "_hc_") ''HyperdataCorpus)
$(deriveJSON (unPrefix "_ha_") ''HyperdataAnnuaire)
------------------------------------------------------------------------
-- Instances
------------------------------------------------------------------------
instance ToSchema HyperdataCorpus where
declareNamedSchema proxy =
genericDeclareNamedSchema (unPrefixSwagger "_hc_") proxy
& mapped.schema.description ?~ "Corpus"
& mapped.schema.example ?~ toJSON hyperdataCorpus
& mapped.schema.description ?~ "Corpus Hyperdata"
& mapped.schema.example ?~ toJSON defaultHyperdataCorpus
instance ToSchema HyperdataAnnuaire where
declareNamedSchema proxy =
genericDeclareNamedSchema (unPrefixSwagger "hyperdataAnnuaire_") proxy
& mapped.schema.description ?~ "an annuaire"
genericDeclareNamedSchema (unPrefixSwagger "_ha_") proxy
& mapped.schema.description ?~ "Annuaire Hyperdata"
& mapped.schema.example ?~ toJSON defaultHyperdataAnnuaire
------------------------------------------------------------------------
instance Arbitrary HyperdataCorpus where
arbitrary = pure defaultHyperdataCorpus
instance Arbitrary HyperdataAnnuaire where
arbitrary = pure defaultHyperdataAnnuaire
------------------------------------------------------------------------
instance FromField HyperdataCorpus
where
......@@ -175,7 +147,6 @@ instance FromField HyperdataCorpus
instance FromField HyperdataAnnuaire
where
fromField = fromField'
------------------------------------------------------------------------
instance QueryRunnerColumnDefault PGJsonb HyperdataCorpus
where
......
......@@ -25,25 +25,25 @@ import Gargantext.Database.Admin.Types.Hyperdata.Prelude
------------------------------------------------------------------------
data HyperdataDocument = HyperdataDocument { _hyperdataDocument_bdd :: !(Maybe Text)
, _hyperdataDocument_doi :: !(Maybe Text)
, _hyperdataDocument_url :: !(Maybe Text)
, _hyperdataDocument_uniqId :: !(Maybe Text)
, _hyperdataDocument_uniqIdBdd :: !(Maybe Text)
, _hyperdataDocument_page :: !(Maybe Int)
, _hyperdataDocument_title :: !(Maybe Text)
, _hyperdataDocument_authors :: !(Maybe Text)
, _hyperdataDocument_institutes :: !(Maybe Text)
, _hyperdataDocument_source :: !(Maybe Text)
, _hyperdataDocument_abstract :: !(Maybe Text)
, _hyperdataDocument_publication_date :: !(Maybe Text)
, _hyperdataDocument_publication_year :: !(Maybe Int)
, _hyperdataDocument_publication_month :: !(Maybe Int)
, _hyperdataDocument_publication_day :: !(Maybe Int)
, _hyperdataDocument_publication_hour :: !(Maybe Int)
, _hyperdataDocument_publication_minute :: !(Maybe Int)
, _hyperdataDocument_publication_second :: !(Maybe Int)
, _hyperdataDocument_language_iso2 :: !(Maybe Text)
data HyperdataDocument = HyperdataDocument { _hd_bdd :: !(Maybe Text)
, _hd_doi :: !(Maybe Text)
, _hd_url :: !(Maybe Text)
, _hd_uniqId :: !(Maybe Text)
, _hd_uniqIdBdd :: !(Maybe Text)
, _hd_page :: !(Maybe Int)
, _hd_title :: !(Maybe Text)
, _hd_authors :: !(Maybe Text)
, _hd_institutes :: !(Maybe Text)
, _hd_source :: !(Maybe Text)
, _hd_abstract :: !(Maybe Text)
, _hd_publication_date :: !(Maybe Text)
, _hd_publication_year :: !(Maybe Int)
, _hd_publication_month :: !(Maybe Int)
, _hd_publication_day :: !(Maybe Int)
, _hd_publication_hour :: !(Maybe Int)
, _hd_publication_minute :: !(Maybe Int)
, _hd_publication_second :: !(Maybe Int)
, _hd_language_iso2 :: !(Maybe Text)
} deriving (Show, Generic)
......@@ -68,23 +68,23 @@ data StatusV3 = StatusV3 { statusV3_error :: !(Maybe Text)
$(deriveJSON (unPrefix "statusV3_") ''StatusV3)
------------------------------------------------------------------------
data HyperdataDocumentV3 = HyperdataDocumentV3 { hyperdataDocumentV3_publication_day :: !(Maybe Int)
, hyperdataDocumentV3_language_iso2 :: !(Maybe Text)
, hyperdataDocumentV3_publication_second :: !(Maybe Int)
, hyperdataDocumentV3_publication_minute :: !(Maybe Int)
, hyperdataDocumentV3_publication_month :: !(Maybe Int)
, hyperdataDocumentV3_publication_hour :: !(Maybe Int)
, hyperdataDocumentV3_error :: !(Maybe Text)
, hyperdataDocumentV3_language_iso3 :: !(Maybe Text)
, hyperdataDocumentV3_authors :: !(Maybe Text)
, hyperdataDocumentV3_publication_year :: !(Maybe Int)
, hyperdataDocumentV3_publication_date :: !(Maybe Text)
, hyperdataDocumentV3_language_name :: !(Maybe Text)
, hyperdataDocumentV3_statuses :: !(Maybe [StatusV3])
, hyperdataDocumentV3_realdate_full_ :: !(Maybe Text)
, hyperdataDocumentV3_source :: !(Maybe Text)
, hyperdataDocumentV3_abstract :: !(Maybe Text)
, hyperdataDocumentV3_title :: !(Maybe Text)
data HyperdataDocumentV3 = HyperdataDocumentV3 { _hdv3_publication_day :: !(Maybe Int)
, _hdv3_language_iso2 :: !(Maybe Text)
, _hdv3_publication_second :: !(Maybe Int)
, _hdv3_publication_minute :: !(Maybe Int)
, _hdv3_publication_month :: !(Maybe Int)
, _hdv3_publication_hour :: !(Maybe Int)
, _hdv3_error :: !(Maybe Text)
, _hdv3_language_iso3 :: !(Maybe Text)
, _hdv3_authors :: !(Maybe Text)
, _hdv3_publication_year :: !(Maybe Int)
, _hdv3_publication_date :: !(Maybe Text)
, _hdv3_language_name :: !(Maybe Text)
, _hdv3_statuses :: !(Maybe [StatusV3])
, _hdv3_realdate_full_ :: !(Maybe Text)
, _hdv3_source :: !(Maybe Text)
, _hdv3_abstract :: !(Maybe Text)
, _hdv3_title :: !(Maybe Text)
} deriving (Show, Generic)
......@@ -100,11 +100,11 @@ instance ToHyperdataDocument HyperdataDocument
------------------------------------------------------------------------
instance Eq HyperdataDocument where
(==) h1 h2 = (==) (_hyperdataDocument_uniqId h1) (_hyperdataDocument_uniqId h2)
(==) h1 h2 = (==) (_hd_uniqId h1) (_hd_uniqId h2)
------------------------------------------------------------------------
instance Ord HyperdataDocument where
compare h1 h2 = compare (_hyperdataDocument_publication_date h1) (_hyperdataDocument_publication_date h2)
compare h1 h2 = compare (_hd_publication_date h1) (_hd_publication_date h2)
------------------------------------------------------------------------
instance Arbitrary HyperdataDocument where
arbitrary = elements arbitraryHyperdataDocuments
......@@ -132,14 +132,14 @@ instance Hyperdata HyperdataDocument
instance Hyperdata HyperdataDocumentV3
------------------------------------------------------------------------
$(makeLenses ''HyperdataDocument)
-- $(makeLenses ''HyperdataDocumentV3)
$(makeLenses ''HyperdataDocumentV3)
$(deriveJSON (unPrefix "_hyperdataDocument_") ''HyperdataDocument)
$(deriveJSON (unPrefix "hyperdataDocumentV3_") ''HyperdataDocumentV3)
$(deriveJSON (unPrefix "_hd_") ''HyperdataDocument)
$(deriveJSON (unPrefix "_hdv3_") ''HyperdataDocumentV3)
instance ToSchema HyperdataDocument where
declareNamedSchema proxy =
genericDeclareNamedSchema (unPrefixSwagger "_hyperdataDocument_") proxy
genericDeclareNamedSchema (unPrefixSwagger "_hd_") proxy
& mapped.schema.description ?~ "Document Hyperdata"
& mapped.schema.example ?~ toJSON defaultHyperdataDocument
......
{-|
Module : Gargantext.Database.Admin.Types.Hyperdata.Frame
Description :
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module Gargantext.Database.Admin.Types.Hyperdata.Frame
where
import Gargantext.Prelude
import Gargantext.Database.Admin.Types.Hyperdata.Prelude
------------------------------------------------------------------------
data HyperdataFrame =
HyperdataFrame { _hf_base :: !Text
, _hf_frame_id :: !Text
}
deriving (Generic)
defaultHyperdataFrame :: HyperdataFrame
defaultHyperdataFrame = HyperdataFrame "" ""
------------------------------------------------------------------------
-- Instances
------------------------------------------------------------------------
instance Hyperdata HyperdataFrame
$(makeLenses ''HyperdataFrame)
$(deriveJSON (unPrefix "_hf_") ''HyperdataFrame)
instance Arbitrary HyperdataFrame where
arbitrary = pure defaultHyperdataFrame
instance FromField HyperdataFrame
where
fromField = fromField'
instance QueryRunnerColumnDefault PGJsonb HyperdataFrame
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance ToSchema HyperdataFrame where
declareNamedSchema proxy =
genericDeclareNamedSchema (unPrefixSwagger "_hf_") proxy
& mapped.schema.description ?~ "Frame Hyperdata"
& mapped.schema.example ?~ toJSON defaultHyperdataFrame
......@@ -164,9 +164,8 @@ nodeContactW maybeName maybeContact aId =
name = maybe "Contact" identity maybeName
contact = maybe arbitraryHyperdataContact identity maybeContact
------------------------------------------------------------------------
defaultFolder :: HyperdataCorpus
defaultFolder = defaultCorpus
defaultFolder :: HyperdataFolder
defaultFolder = defaultHyperdataFolder
nodeFolderW :: Maybe Name -> Maybe HyperdataCorpus -> ParentId -> UserId -> NodeWrite
......@@ -179,7 +178,7 @@ nodeCorpusW :: Maybe Name -> Maybe HyperdataCorpus -> ParentId -> UserId -> Node
nodeCorpusW maybeName maybeCorpus pId = node NodeCorpus name corpus (Just pId)
where
name = maybe "Corpus" identity maybeName
corpus = maybe defaultCorpus identity maybeCorpus
corpus = maybe defaultHyperdataCorpus identity maybeCorpus
--------------------------
nodeDocumentW :: Maybe Name -> Maybe HyperdataDocument -> CorpusId -> UserId -> NodeWrite
......
......@@ -119,8 +119,8 @@ instance InsertDb HyperdataDocument
insertDb' u p h = [ toField $ nodeTypeId NodeDocument
, toField u
, toField p
, toField $ maybe "No Title" (DT.take 255) (_hyperdataDocument_title h)
, toField $ _hyperdataDocument_publication_date h -- TODO USE UTCTime
, toField $ maybe "No Title" (DT.take 255) (_hd_title h)
, toField $ _hd_publication_date h -- TODO USE UTCTime
, (toField . toJSON) h
]
......@@ -202,17 +202,17 @@ instance AddUniqId HyperdataDocument
addUniqId = addUniqIdsDoc
where
addUniqIdsDoc :: HyperdataDocument -> HyperdataDocument
addUniqIdsDoc doc = set hyperdataDocument_uniqIdBdd (Just shaBdd)
$ set hyperdataDocument_uniqId (Just shaUni) doc
addUniqIdsDoc doc = set hd_uniqIdBdd (Just shaBdd)
$ set hd_uniqId (Just shaUni) doc
where
shaUni = sha $ DT.concat $ map ($ doc) shaParametersDoc
shaBdd = sha $ DT.concat $ map ($ doc) ([(\d -> maybeText (_hyperdataDocument_bdd d))] <> shaParametersDoc)
shaBdd = sha $ DT.concat $ map ($ doc) ([(\d -> maybeText (_hd_bdd d))] <> shaParametersDoc)
shaParametersDoc :: [(HyperdataDocument -> Text)]
shaParametersDoc = [ \d -> maybeText (_hyperdataDocument_title d)
, \d -> maybeText (_hyperdataDocument_abstract d)
, \d -> maybeText (_hyperdataDocument_source d)
, \d -> maybeText (_hyperdataDocument_publication_date d)
shaParametersDoc = [ \d -> maybeText (_hd_title d)
, \d -> maybeText (_hd_abstract d)
, \d -> maybeText (_hd_source d)
, \d -> maybeText (_hd_publication_date d)
]
---------------------------------------------------------------------------
......
......@@ -123,7 +123,7 @@ nodeNodesCategory inputData = map (\(PGS.Only a) -> a)
selectDocsDates :: CorpusId -> Cmd err [Text]
selectDocsDates cId = map (head' "selectDocsDates" . splitOn "-")
<$> catMaybes
<$> map (view hyperdataDocument_publication_date)
<$> map (view hd_publication_date)
<$> selectDocs cId
selectDocs :: CorpusId -> Cmd err [HyperdataDocument]
......
......@@ -169,13 +169,13 @@ instance ToNamedRecord CsvDoc where
]
hyperdataDocument2csvDoc :: HyperdataDocument -> CsvDoc
hyperdataDocument2csvDoc h = CsvDoc (m $ _hyperdataDocument_title h)
(m $ _hyperdataDocument_source h)
(mI $ _hyperdataDocument_publication_year h)
(mI $ _hyperdataDocument_publication_month h)
(mI $ _hyperdataDocument_publication_day h)
(m $ _hyperdataDocument_abstract h)
(m $ _hyperdataDocument_authors h)
hyperdataDocument2csvDoc h = CsvDoc (m $ _hd_title h)
(m $ _hd_source h)
(mI $ _hd_publication_year h)
(mI $ _hd_publication_month h)
(mI $ _hd_publication_day h)
(m $ _hd_abstract h)
(m $ _hd_authors h)
where
m = maybe "" identity
......
......@@ -52,8 +52,8 @@ flowPhylo cId = do
termList <- Map.toList <$> getTermsWith Text.words [list] NgramsTerms MapTerm
docs' <- catMaybes
<$> map (\h -> (,) <$> _hyperdataDocument_publication_year h
<*> _hyperdataDocument_abstract h
<$> map (\h -> (,) <$> _hd_publication_year h
<*> _hd_abstract h
)
<$> selectDocs cId
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment