Files

150 lines
5.5 KiB
Plaintext
Raw Permalink Normal View History

2026-01-23 17:03:45 +08:00
#open database pgraph2;
#------------------------------------
# create subset of DBLP database
#------------------------------------
query isdefined(deleteObject("DocumentP"));
let DocumentP = [ const rel(tuple([
Type: string,
Docid: int,
Authors: text,
Title: text,
Booktitle: text,
Pages: string,
Year: string,
Journal: text,
Volume: string,
Number: string,
Month: string,
Url: text,
School: text,
Publisher: text,
Isbn: string
] )) value ()
];
# !!!!! THIS IS THE POINT WHERE THE SUBSET OF THE DATA CAN BE DEFINED !!!!!!!
query Document_raw feed filter[(.Authors contains "Gueting") or (.Year="2017")] DocumentP insert count;
# !!!!! FROM THAT POINT ONLY DATA WILL BE TRANSFORMED, !!!!!!!!!
# !!!!! THAT IS CONNECTED TO THIS SUBSET !!!!!!!
#------------------------------------
# create IS_AUTHOR relation
#------------------------------------
query isdefined(deleteObject("AUTHOR_OFp"));
let AUTHOR_OFp = [ const rel(tuple([
Authorid: int,
Docid: int,
Cost: real] )) value ()
];
query DocumentP feed {d} Authordoc_raw feed {a} hashjoin[Docid_d, Docid_a] projectextend[; Authorid: .Authorid_a, Docid: .Docid_a, Cost: 1.0]
AUTHOR_OFp insert count;
#------------------------------------
# create Author relation
#------------------------------------
query isdefined(deleteObject("AuthorP"));
let AuthorP = [ const rel(tuple([
Name: string,
Lclastname: string,
Authorid: int] )) value ()
];
query Author_raw feed {a} AUTHOR_OFp feed sortby[Authorid asc] groupby[Authorid; Cnt:group count] {ad} hashjoin[Authorid_a, Authorid_ad]
project[Name_a,Lclastname_a,Authorid_a] renameAttr[Name:Name_a,Lclastname:Lclastname_a,Authorid:Authorid_a] AuthorP insert count;
#------------------------------------
# create Keyword relation
#------------------------------------
query isdefined(deleteObject("KeywordP"));
let KeywordP = [ const rel(tuple([
Wordid: int,
Word: string] )) value ()
];
query Keyword_raw feed {k} DocumentP feed {d} hashjoin[Docid_k, Docid_d] sortby[Word_k]
groupby[Word_k; Cnt:group count] addcounter[Wordid,100]
project[Wordid,Word_k] renameAttr[Word:Word_k] KeywordP insert count;
#------------------------------------
# create KEYWORD_OF relation
#------------------------------------
query isdefined(deleteObject("KEYWORD_OFp"));
let KEYWORD_OFp = [ const rel(tuple([
Docid: int,
Wordid: int,
Cost: real] )) value ()
];
query Keyword_raw feed {k} DocumentP feed {d} hashjoin[Docid_k, Docid_d] {d} KeywordP feed {k} hashjoin[Word_k_d,Word_k]
projectextend[; Docid: .Docid_d_d, Wordid: .Wordid_k, Cost: 1.0] KEYWORD_OFp insert count;
#------------------------------------
# create Publisher relation
#------------------------------------
query isdefined(deleteObject("PublisherP"));
let PublisherP = [ const rel(tuple([
Publisherid: int,
Name: text] )) value ()
];
query DocumentP feed renameAttr[Name:"Publisher"] filter[not(.Name="")] sortby[Name asc] groupby[Name; Cnt:group count] addcounter[Publisherid,100]
project[Publisherid,Name] PublisherP insert count;
#------------------------------------
# create PUBLISHED_BY relation
#------------------------------------
query isdefined(deleteObject("PUBLISHED_BYp"));
let PUBLISHED_BYp = [ const rel(tuple([
Docid: int,
Publisherid: int,
Cost: real] )) value ()
];
query DocumentP feed {d} PublisherP feed {p} hashjoin[Publisher_d, Name_p]
projectextend[; Docid: .Docid_d, Publisherid: .Publisherid_p, Cost: 1.0] PUBLISHED_BYp insert count;
#------------------------------------
# create Conference relation
#------------------------------------
query isdefined(deleteObject("ConferenceP"));
let ConferenceP = [ const rel(tuple([
Conferenceid: int,
Name: text ] )) value ()
];
query DocumentP feed filter[.Type="inproceedings"] renameAttr[Name:Booktitle] sortby[Name asc]
groupby[Name; Cnt:group count] addcounter[Conferenceid,100] project[Conferenceid,Name] ConferenceP insert count;
#------------------------------------
# create PUBLISHED_AT relation
#------------------------------------
query isdefined(deleteObject("PUBLISHED_ATp"));
let PUBLISHED_ATp = [ const rel(tuple([
Docid: int,
Conferenceid: int,
Year : string,
Cost: real] )) value ()
];
query DocumentP feed filter[.Type="inproceedings"] {d} ConferenceP feed {c} hashjoin[Booktitle_d, Name_c]
projectextend[; Docid: .Docid_d, Conferenceid: .Conferenceid_c, Year: .Year_d, Cost: 1.0] PUBLISHED_ATp insert count;
#------------------------------------
# create Collection relation
#------------------------------------
query isdefined(deleteObject("CollectionP"));
let CollectionP = [ const rel(tuple([
Collectionid: int,
Year:string,
Name: text ] )) value ()
];
query DocumentP feed filter[.Type="incollection"] projectextend[Booktitle,Year;Sort:.Booktitle+"#"+.Year]
renameAttr[Name:Booktitle] sortby[Sort asc] groupby[Sort,Year,Name; Cnt:group count] addcounter[Collectionid,100]
project[Collectionid,Year,Name] CollectionP insert count;
#------------------------------------
# create PART_OF relation
#------------------------------------
query isdefined(deleteObject("PART_OFp"));
let PART_OFp = [ const rel(tuple([
Docid: int,
Collectionid: int,
Cost: real] )) value ()
];
query DocumentP feed filter[.Type="incollection"] projectextend[Docid;Sort:.Booktitle+"#"+.Year] {d}
CollectionP feed projectextend[Collectionid;Sort:.Name+"#"+.Year] {c} hashjoin[Sort_d, Sort_c] projectextend[; Docid: .Docid_d, Collectionid: .Collectionid_c, Cost: 1.0]
PART_OFp insert count;