├── papers ├── 中文上下位关系自动抽取技术研究_陈松毅.caj ├── 汉语词汇上下位关系获取及其应用研究_宋文杰.caj └── 结合语境与布朗聚类特征的上下位关系验证.pdf ├── image ├── kb-apple.png ├── kb-xiaomi.png ├── kb-yaoming.png ├── concept-apple.png ├── concept-river.png └── concept-kongzi.png ├── .gitattributes ├── .idea ├── vcs.xml ├── modules.xml ├── HyponymyExtraction.iml ├── misc.xml └── workspace.xml ├── extract_kb ├── word_concept.txt ├── 中国.html ├── 西瓜.html ├── 长江.html ├── 孔子.html ├── 苹果.html ├── kb_search.py └── VIS │ └── dist │ └── vis.min.css ├── README.md ├── extract_baike ├── 清华大学.html ├── word_concept.txt ├── 长江.html ├── 姚明.html ├── 小米.html ├── 苹果.html ├── 中国.html ├── Baike_extract.py └── VIS │ └── dist │ ├── vis.min.css │ └── vis.css └── extract_text └── hyper_extract.py /papers/中文上下位关系自动抽取技术研究_陈松毅.caj: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /papers/汉语词汇上下位关系获取及其应用研究_宋文杰.caj: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /papers/结合语境与布朗聚类特征的上下位关系验证.pdf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /image/kb-apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/kb-apple.png -------------------------------------------------------------------------------- /image/kb-xiaomi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/kb-xiaomi.png -------------------------------------------------------------------------------- /image/kb-yaoming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/kb-yaoming.png -------------------------------------------------------------------------------- /image/concept-apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/concept-apple.png -------------------------------------------------------------------------------- /image/concept-river.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/concept-river.png -------------------------------------------------------------------------------- /image/concept-kongzi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuhuanyong/HyponymyExtraction/HEAD/image/concept-kongzi.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Python 2 | *.css linguist-language=Python 3 | *.html linguist-language=Python 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/HyponymyExtraction.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /extract_kb/word_concept.txt: -------------------------------------------------------------------------------- 1 | 诸子百家->中国哲学家 2 | 儒家人物->儒家 3 | 哲学->人文学科 4 | 哲学->人文社科 5 | 孔子->儒家人物 6 | 儒家->信仰 7 | 各国哲学家->哲学家 8 | 思想史->思想 9 | 各学科中国专家->专家 10 | 中国哲学->中国文化 11 | 各学科中国专家->学科 12 | 中国哲学家->中国哲学 13 | 思维科学->哲学理论 14 | 专门史->历史 15 | 诸子百家->中国思想家 16 | 哲学->文化 17 | 中国思想家->思想家 18 | 思想家->社会科学家 19 | 诸子百家->哲学理论 20 | 思想家->思想 21 | 各学科中国专家->中国人 22 | 中国哲学家->中国思想家 23 | 哲学理论->理论 24 | 各主题历史->专门史 25 | 中国哲学家->各国哲学家 26 | 儒家->哲学流派 27 | 中国哲学家->各学科中国专家 28 | 哲学->抽象 29 | 思想史->专门史 30 | 儒家->诸子百家 31 | 理论->学术 32 | 诸子百家->思想史 33 | 各国哲学家->按国家分类的各职业人物 34 | 思想史->各主题历史 35 | 思想家->文化人物 36 | 信仰->思想 37 | 中国思想家->各学科中国专家 38 | 哲学流派->哲学理论 39 | 思想->思维科学 40 | 哲学理论->哲学 41 | 思想家->思想史 42 | 理论->思想 43 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HyponymyExtraction 2 | HyponymyExtraction and Graph based on KB Schema, Baike-kb and online text extract, 基于知识概念体系,百科知识库,以及在线搜索结构化方式的词语上下位抽取. 3 | # 项目介绍 4 | 上下位关系是语言学概念。概括性较强的单词叫做特定性较强的单词的上位词(hypernym),特定性较强的单词叫做概括性较强的单词的下位词(hyponym)。比如我们说,苹果是一种水果,苹果就是水果的一个下位词,也可以称为一个实例,而水果则是苹果的一个上位词,也可以称为一个类. 5 | 上下位这种语义关系是整个词汇语义关系中的一个重要内容,通过上下位关系,可以将世间万物进行组织和练联系起来,对于增进人们对某一实体或概念的认知上具有重要帮助 6 | 自然语言文本中存储着大量的上下位关系知识,如经过语言专家编辑整理形成的概念语义词典,如同义词词林,中文主题概念词典,hownet等,也存在开放百科知识平台当中,有效地利用这些信息,能够支持多项应用,如: 7 | 1) 基于上下位关系的知识问答 8 | 2) 基于上下位关系的知识推荐 9 | 3) 基于上下位关系的文本理解 10 | 本项目主要解决第一个问题,本项目的应用场景是:用户输入一个需要了解的词语,后台通过查询既定知识库,从百百科知识库,在线非结构化文本中进行抽取,形成关于该词语的上下位词语网络,并以图谱这一清晰明了的方式展示出来. 11 | 12 | # 本项目将采用三种方式来完成这一目标 13 | 1)基于既定知识库的直接查询,对应extract_kb 14 | 2)基于在线百科知识库的抽取,对应extract_baike 15 | 3)基于在线文本的结构化抽取,对应extract_text 16 | 17 | # 项目分解 18 | 19 | # 1)基于既定知识库的直接查询 20 | 使用方式:进入extract_kb, 设定需要查询的词word,指定python kb_search.py, 会生成相应的html文件,为最终展示结果 21 | # 结果展示   22 | 苹果上下位 23 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/concept-apple.png) 24 | 长江上下位 25 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/concept-river.png) 26 | 孔子上下位 27 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/concept-kongzi.png) 28 | 29 | 30 | # 2)基于在线百科的概念抽取 31 | 使用方式:进入extract_baike要查询的词word,指定python Baike_search.py, 会生成相应的html文件,为最终展示结果 32 | # 结果展示 33 | 苹果上下位 34 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/kb-apple.png) 35 | 小米上下位 36 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/kb-xiaomi.png) 37 | 姚明上下位 38 | ![image](https://github.com/liuhuanyong/HyponymyExtraction/blob/master/image/kb-yaoming.png) 39 | 40 | If any question about the project or me ,see https://liuhuanyong.github.io/ 41 | -------------------------------------------------------------------------------- /extract_baike/清华大学.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_kb/中国.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_kb/西瓜.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_baike/word_concept.txt: -------------------------------------------------------------------------------- 1 | 苹果->蔷薇科苹果属果实 2 | 蔷薇科苹果属果实->苹果 3 | 蔷薇科苹果属果实->水果 4 | 蔷薇科苹果属果实->苹果 5 | 苹果->韩国2008年康理贯执导电影 6 | 韩国2008年康理贯执导电影->电影 7 | 韩国2008年康理贯执导电影->电影 8 | 韩国2008年康理贯执导电影->娱乐作品 9 | 苹果->苹果产品公司 10 | 苹果产品公司->公司 11 | 苹果产品公司->公司 12 | 苹果->动漫《男子高中生的日常》中角色 13 | 动漫《男子高中生的日常》中角色->角色 14 | 动漫《男子高中生的日常》中角色->人物 15 | 动漫《男子高中生的日常》中角色->动漫形象 16 | 动漫《男子高中生的日常》中角色->苹果 17 | 苹果->谢和弦、E-SO演唱歌曲 18 | 谢和弦、E-SO演唱歌曲->歌曲 19 | 谢和弦、E-SO演唱歌曲->人物 20 | 苹果->蔷薇科苹果属果树 21 | 蔷薇科苹果属果树->果树 22 | 蔷薇科苹果属果树->植物 23 | 蔷薇科苹果属果树->生物物种 24 | 蔷薇科苹果属果树->木本植物 25 | 苹果->安与骑兵演唱歌曲 26 | 安与骑兵演唱歌曲->歌曲 27 | 安与骑兵演唱歌曲->音乐作品 28 | 安与骑兵演唱歌曲->民族音乐 29 | 安与骑兵演唱歌曲->单曲 30 | 安与骑兵演唱歌曲->娱乐作品 31 | 苹果->伊朗1998年莎米拉·玛克玛尔巴夫执导电影 32 | 伊朗1998年莎米拉·玛克玛尔巴夫执导电影->电影 33 | 伊朗1998年莎米拉·玛克玛尔巴夫执导电影->电影 34 | 伊朗1998年莎米拉·玛克玛尔巴夫执导电影->娱乐作品 35 | 苹果->Minecraft中的食物类物品 36 | Minecraft中的食物类物品->物品 37 | 苹果->邓丽欣演唱歌曲 38 | 邓丽欣演唱歌曲->歌曲 39 | 邓丽欣演唱歌曲->音乐 40 | 苹果->2007年李玉执导电影 41 | 2007年李玉执导电影->电影 42 | 2007年李玉执导电影->电影 43 | 2007年李玉执导电影->爱情电影 44 | 2007年李玉执导电影->电影作品 45 | 2007年李玉执导电影->娱乐作品 46 | 苹果->网游《天堂梦》中人物 47 | 网游《天堂梦》中人物->人物 48 | 网游《天堂梦》中人物->虚拟人物 49 | 网游《天堂梦》中人物->人物 50 | 苹果->中药 51 | 中药->中医药 52 | 苹果->公司 53 | 苹果->果实 54 | 果实-> 55 | 果实->水果 56 | 苹果->果树 57 | 苹果->动漫人物 58 | 动漫人物->人物 59 | 苹果->电脑 60 | 苹果->苹果公司 61 | 苹果公司->公司 62 | 苹果公司->企业 63 | 苹果公司->国外品牌 64 | 苹果公司->品牌 65 | 苹果公司->科技 66 | 苹果公司->IT 67 | 苹果->1998年莎米拉·玛克玛尔巴夫导演伊朗电影 68 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->电影 69 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->韩国电影 70 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->爱情电影 71 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->影视作品 72 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->剧情电影 73 | 1998年莎米拉·玛克玛尔巴夫导演伊朗电影->电影 74 | 苹果->2008年康理贯导演韩国电影 75 | 2008年康理贯导演韩国电影->电影 76 | 2008年康理贯导演韩国电影->韩国电影 77 | 2008年康理贯导演韩国电影->爱情电影 78 | 2008年康理贯导演韩国电影->影视作品 79 | 2008年康理贯导演韩国电影->剧情电影 80 | 2008年康理贯导演韩国电影->电影 81 | 苹果->安与骑兵歌曲 82 | 安与骑兵歌曲->歌曲 83 | 安与骑兵歌曲->音乐作品 84 | 安与骑兵歌曲->单曲 85 | 苹果->人物 86 | 人物->虚拟人物 87 | 苹果->邓丽欣歌曲 88 | 邓丽欣歌曲->歌曲 89 | 邓丽欣歌曲->娱乐 90 | 苹果->苹果上线官方微信公众号 91 | 苹果上线官方微信公众号->公众 92 | 苹果上线官方微信公众号->工具 93 | 娱乐作品->娱乐 94 | 木本植物->植物 95 | 音乐作品->音乐 96 | 民族音乐->音乐 97 | 娱乐作品->娱乐 98 | 娱乐作品->娱乐 99 | 爱情电影->电影 100 | 爱情电影->电影 101 | 爱情电影->电影 102 | 爱情电影->电影 103 | 爱情电影->电影 104 | 爱情电影->电影 105 | 爱情电影->电影 106 | 爱情电影->电影 107 | 爱情电影->电影 108 | 爱情电影->电影 109 | 电影作品->电影 110 | 电影作品->电影 111 | 电影作品->电影 112 | 电影作品->电影 113 | 电影作品->电影 114 | 电影作品->电影 115 | 电影作品->电影 116 | 电影作品->电影 117 | 电影作品->电影 118 | 电影作品->电影 119 | 娱乐作品->娱乐 120 | 虚拟人物->人物 121 | 虚拟人物->人物 122 | 虚拟人物->人物 123 | 虚拟人物->人物 124 | 虚拟人物->人物 125 | 虚拟人物->人物 126 | 国外品牌->品牌 127 | 苹果公司->苹果 128 | 苹果公司->苹果 129 | 苹果公司->公司 130 | 苹果公司->公司 131 | 苹果公司->苹果 132 | 苹果公司->公司 133 | 苹果公司->公司 134 | 韩国电影->电影 135 | 韩国电影->电影 136 | 韩国电影->电影 137 | 韩国电影->电影 138 | 韩国电影->电影 139 | 韩国电影->电影 140 | 韩国电影->电影 141 | 韩国电影->电影 142 | 韩国电影->电影 143 | 韩国电影->电影 144 | 爱情电影->电影 145 | 爱情电影->电影 146 | 爱情电影->电影 147 | 爱情电影->电影 148 | 爱情电影->电影 149 | 爱情电影->电影 150 | 爱情电影->电影 151 | 爱情电影->电影 152 | 爱情电影->电影 153 | 爱情电影->电影 154 | 剧情电影->电影 155 | 剧情电影->电影 156 | 剧情电影->电影 157 | 剧情电影->电影 158 | 剧情电影->电影 159 | 剧情电影->电影 160 | 剧情电影->电影 161 | 剧情电影->电影 162 | 剧情电影->电影 163 | 剧情电影->电影 164 | 韩国电影->电影 165 | 韩国电影->电影 166 | 韩国电影->电影 167 | 韩国电影->电影 168 | 韩国电影->电影 169 | 韩国电影->电影 170 | 韩国电影->电影 171 | 韩国电影->电影 172 | 韩国电影->电影 173 | 韩国电影->电影 174 | 爱情电影->电影 175 | 爱情电影->电影 176 | 爱情电影->电影 177 | 爱情电影->电影 178 | 爱情电影->电影 179 | 爱情电影->电影 180 | 爱情电影->电影 181 | 爱情电影->电影 182 | 爱情电影->电影 183 | 爱情电影->电影 184 | 剧情电影->电影 185 | 剧情电影->电影 186 | 剧情电影->电影 187 | 剧情电影->电影 188 | 剧情电影->电影 189 | 剧情电影->电影 190 | 剧情电影->电影 191 | 剧情电影->电影 192 | 剧情电影->电影 193 | 剧情电影->电影 194 | 音乐作品->音乐 195 | 虚拟人物->人物 196 | 虚拟人物->人物 197 | 虚拟人物->人物 198 | 虚拟人物->人物 199 | 虚拟人物->人物 200 | 虚拟人物->人物 201 | -------------------------------------------------------------------------------- /extract_baike/长江.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_baike/姚明.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_kb/长江.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_kb/孔子.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_baike/小米.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_text/hyper_extract.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # coding: utf-8 3 | # File: extract.py 4 | # Author: lhy 5 | # Date: 18-8-9 6 | 7 | import re 8 | import pymongo 9 | import jieba.posseg as pseg 10 | import os 11 | 12 | class HyponomyExtraction: 13 | def __init__(self): 14 | self.conn = pymongo.MongoClient() 15 | 16 | '''对正文进行规范化处理,去除空白符''' 17 | def remove_noisy(self, content): 18 | return content.replace('\xa0','').replace('\u3000', '').replace(' ', '。').replace('(','').replace(')','') 19 | 20 | '''进行分句处理''' 21 | def spilt_sent(self, content): 22 | content = self.remove_noisy(content) 23 | punc = "!?。。,:;、??!!。;;::\n\r,—" 24 | return [i for i in re.split(r'[%s]'%punc, content) if i] 25 | 26 | '''通过分词,看看是否符合情况''' 27 | def pos_filter(self, s): 28 | if not s: 29 | return [] 30 | wds = [w.word for w in pseg.cut(s)] 31 | pos = [w.flag for w in pseg.cut(s) if w.flag[0]] 32 | 33 | if len(''.join(wds))<2: 34 | return [] 35 | if 'n' not in pos: 36 | return [] 37 | return ''.join(wds) 38 | 39 | '''通过分词,看看是否符合情况''' 40 | def pos_extract(self, s): 41 | if not s: 42 | return [] 43 | # wds = [w.word+'_'+w.flag for w in pseg.cut(s) if w.flag[0] in ['n','v','a']] 44 | # wds = [w.word for w in pseg.cut(s) if w.flag[0] in ['n','v','a']] 45 | wds = [w.word for w in pseg.cut(s) if w.flag[0] not in ['d','m','q','p','u','r','w','x','i'] and len(w.word) > 1] 46 | pos = [w.flag for w in pseg.cut(s) if w.flag[0] not in ['d','m','q','p','u','r','w','x','i'] and len(w.word) > 1] 47 | if len(wds)>3 or 'n' not in pos: 48 | return [] 49 | return ''.join(wds) 50 | 51 | '''A是一种B''' 52 | def ruler1(self, string): 53 | data = [] 54 | pattern = re.compile(r'(.*)是一(种|个|类)(.*)') 55 | res = pattern.findall(string) 56 | if res: 57 | sub = self.pos_filter(res[0][0]) 58 | big = self.pos_filter(res[0][2]) 59 | if sub and big: 60 | data.append([sub, big]) 61 | return data 62 | 63 | '''A是B的一种''' 64 | def ruler2(self, string): 65 | data = [] 66 | pattern = re.compile(r'(.*)是(.*)的一(种|个|类)') 67 | res = pattern.findall(string) 68 | if res: 69 | sub = self.pos_filter(res[0][0]) 70 | big = self.pos_filter(res[0][1]) 71 | if sub and big: 72 | data.append([sub, big]) 73 | return data 74 | 75 | '''抽取主函数''' 76 | def extract_main(self, sent): 77 | data = [] 78 | res1 = self.ruler1(sent) 79 | res2 = self.ruler2(sent) 80 | data += res1 81 | data += res2 82 | return data 83 | 84 | '''插数据库''' 85 | def process_mongo(self): 86 | count = 0 87 | for item in self.conn['novel']['data'].find(): 88 | count += 1 89 | content = item['content'] 90 | sents = self.spilt_sent(content) 91 | for sent in sents: 92 | data = self.extract_main(sent) 93 | if data: 94 | info = {} 95 | info['sent'] = sent 96 | info['data'] = data 97 | print(count, sent, data) 98 | self.conn['novel']['candi'].insert(info) 99 | 100 | '''对候选句子进行处理''' 101 | def process_candis(self): 102 | f = open('hyper_rels.txt', 'w+') 103 | count = 0 104 | e_dict = {} 105 | for item in self.conn['novel']['candi'].find(): 106 | count += 1 107 | print(count) 108 | data = item['data'] 109 | for i in data: 110 | big = i[1] 111 | sub = i[0] 112 | big = self.pos_extract(big) 113 | sub = self.pos_extract(sub) 114 | pair = '-->'.join([sub, big]) 115 | if pair not in e_dict: 116 | e_dict[pair] = 1 117 | else: 118 | e_dict[pair] += 1 119 | for item in sorted(e_dict.items(), key=lambda asd:asd[1], reverse=True): 120 | f.write(item[0] + ' ' + str(item[1])+'\n') 121 | f.close() 122 | 123 | '''对候选句子进行处理''' 124 | def process_candis2(self): 125 | f = open('hyper_rels2.txt', 'w+') 126 | count = 0 127 | e_dict = {} 128 | for item in self.conn['novel']['candi'].find(): 129 | count += 1 130 | print(count) 131 | data = item['data'] 132 | for i in data: 133 | big = i[1] 134 | sub = i[0] 135 | big = self.pos_extract(big) 136 | sub = self.pos_extract(sub) 137 | if big and sub: 138 | pair = '-->'.join([sub, big]) 139 | print(pair) 140 | 141 | if pair not in e_dict: 142 | e_dict[pair] = 1 143 | else: 144 | e_dict[pair] += 1 145 | for item in sorted(e_dict.items(), key=lambda asd:asd[1], reverse=True): 146 | f.write(item[0] + ' ' + str(item[1])+'\n') 147 | f.close() 148 | 149 | 150 | '''对抽取处理的关系进行图谱展示''' 151 | 152 | content = '''油加醋,或者去涂脂抹粉“打造”它。历史是不需要加工的。无形的音乐是一种灵魂,而肺癌是癌症的一种''' 153 | handler = HyponomyExtraction() 154 | handler.process_candis2() 155 | -------------------------------------------------------------------------------- /extract_kb/苹果.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_baike/苹果.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_kb/kb_search.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # coding: utf-8 3 | # File: kb_search.py 4 | # Author: lhy 5 | # Date: 18-8-11 6 | import os 7 | 8 | '''构造显示图谱''' 9 | class CreatePage: 10 | def __init__(self, html_name): 11 | self.html_name = html_name 12 | self.base = ''' 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 60 | 61 | 62 | ''' 63 | 64 | '''生成数据''' 65 | def collect_data(self, nodes, edges): 66 | node_dict = {node: index for index, node in enumerate(nodes)} 67 | data_nodes = [] 68 | data_edges = [] 69 | for node, id in node_dict.items(): 70 | data = {} 71 | data["group"] = 'Event' 72 | data["id"] = id 73 | data["label"] = node 74 | data_nodes.append(data) 75 | 76 | for edge in edges: 77 | data = {} 78 | data['from'] = node_dict.get(edge[0]) 79 | data['label'] = 'is-a' 80 | data['to'] = node_dict.get(edge[1]) 81 | data_edges.append(data) 82 | return data_nodes, data_edges 83 | 84 | '''生成html文件''' 85 | def create_html(self, data_nodes, data_edges): 86 | f = open('{0}.html'.format(self.html_name), 'w+') 87 | html = self.base.replace('data_nodes', str(data_nodes)).replace('data_edges', str(data_edges)) 88 | f.write(html) 89 | f.close() 90 | 91 | 92 | '''图谱展示''' 93 | class EventGraph: 94 | def __init__(self, relfile, html_name): 95 | relfile = relfile 96 | self.html_name = html_name 97 | self.event_dict, self.node_dict = self.collect_events(relfile) 98 | 99 | '''统计事件频次''' 100 | def collect_events(self, relfile): 101 | event_dict = {} 102 | node_dict = {} 103 | for line in open(relfile): 104 | event = line.strip() 105 | print(event) 106 | if not event: 107 | continue 108 | nodes = event.split('->') 109 | for node in nodes: 110 | if node not in node_dict: 111 | node_dict[node] = 1 112 | else: 113 | node_dict[node] += 1 114 | 115 | if event not in event_dict: 116 | event_dict[event] = 1 117 | else: 118 | event_dict[event] += 1 119 | 120 | return event_dict, node_dict 121 | 122 | '''过滤低频事件,构建事件图谱''' 123 | def filter_events(self, event_dict, node_dict): 124 | edges = [] 125 | nodes = [] 126 | for event in sorted(event_dict.items(), key=lambda asd: asd[1], reverse=True)[:2000]: 127 | e1 = event[0].split('->')[0] 128 | e2 = event[0].split('->')[1] 129 | if e1 in node_dict and e2 in node_dict: 130 | nodes.append(e1) 131 | nodes.append(e2) 132 | edges.append([e1, e2]) 133 | else: 134 | continue 135 | return edges, nodes 136 | 137 | '''调用VIS插件,进行事件图谱展示''' 138 | def show_graph(self): 139 | edges, nodes = self.filter_events(self.event_dict, self.node_dict) 140 | handler = CreatePage(self.html_name) 141 | data_nodes, data_edges = handler.collect_data(nodes, edges) 142 | handler.create_html(data_nodes, data_edges) 143 | 144 | class SemanticBaike: 145 | def __init__(self): 146 | cur = '/'.join(os.path.realpath(__file__).split('/')[:-1]) 147 | concept_file = os.path.join(cur, 'baike_concept.txt') 148 | self.tmp_file = os.path.join(cur, 'word_concept.txt') 149 | self.path = [] 150 | self.concept_dict, self.down_concept_dict = self.collect_baikeconcept(concept_file) 151 | 152 | '''加载百科上下位概念''' 153 | def collect_baikeconcept(self, concept_file): 154 | concept_dict = {} 155 | down_concept_dict = {} 156 | for line in open(concept_file): 157 | line = line.strip().split('->') 158 | if not line: 159 | continue 160 | instance = line[0] 161 | category = line[1] 162 | if instance not in concept_dict: 163 | concept_dict[instance] = [category] 164 | else: 165 | concept_dict[instance].append(category) 166 | 167 | if category not in down_concept_dict: 168 | down_concept_dict[category] = [instance] 169 | else: 170 | down_concept_dict[category].append(instance) 171 | 172 | return concept_dict, down_concept_dict 173 | 174 | '''基于百科上下位词典进行遍历查询''' 175 | def walk_up_hyper(self, word): 176 | f = open(self.tmp_file, 'w+') 177 | hyper_words = self.concept_dict.get(word, '') 178 | if not hyper_words: 179 | return 180 | 181 | for hyper in hyper_words: 182 | depth = 0 183 | self.path.append('->'.join([word, hyper])) 184 | self.back_hyper_up(hyper, depth) 185 | 186 | '''基于既定知识库的深度遍历''' 187 | def back_hyper_up(self, word, depth): 188 | depth += 1 189 | if depth > 5: 190 | return 191 | if not word: 192 | return 193 | hyper_words = self.concept_dict.get(word, '') 194 | if not hyper_words: 195 | return [] 196 | for hyper in hyper_words: 197 | self.path.append('->'.join([word, hyper])) 198 | for hyper_ in hyper_words: 199 | if hyper == 'root': 200 | return 201 | self.back_hyper_up(hyper_, depth) 202 | 203 | 204 | '''基于百科上下位词典进行遍历查询''' 205 | def walk_down_hyper(self, word): 206 | hyper_words = self.down_concept_dict.get(word, '') 207 | if not hyper_words: 208 | return 209 | for hyper in hyper_words: 210 | depth = 0 211 | self.path.append('->'.join([word, hyper])) 212 | self.back_hyper_down(hyper, depth) 213 | 214 | 215 | '''基于既定知识库的深度遍历''' 216 | def back_hyper_down(self, word, depth): 217 | depth += 1 218 | if depth > 1: 219 | return 220 | if not word: 221 | return 222 | hyper_words = self.down_concept_dict.get(word, '') 223 | if not hyper_words: 224 | return [] 225 | for hyper in hyper_words: 226 | self.path.append('->'.join([hyper, word])) 227 | for hyper_ in hyper_words: 228 | if word == 'root': 229 | return 230 | self.back_hyper_down(hyper_, depth) 231 | 232 | 233 | '''获取上位和下位''' 234 | def walk_concept_chain(self, word): 235 | f = open(self.tmp_file, 'w+') 236 | # 对其进行上位查找 237 | self.walk_up_hyper(word) 238 | # 对其进行下位查找 239 | # self.walk_down_hyper(word) 240 | for i in set(self.path): 241 | f.write(i + '\n') 242 | f.close() 243 | 244 | handler = EventGraph(self.tmp_file, word) 245 | handler.show_graph() 246 | 247 | 248 | word = '孔子' 249 | handler = SemanticBaike() 250 | handler.walk_concept_chain(word) -------------------------------------------------------------------------------- /extract_baike/中国.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /extract_baike/Baike_extract.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # coding: utf-8 3 | # File: Baike_extract.py 4 | # Author: lhy 5 | # Date: 18-8-11 6 | 7 | from urllib import request 8 | from lxml import etree 9 | from urllib import parse 10 | import jieba.posseg as pseg 11 | import os 12 | 13 | '''构造显示图谱''' 14 | class CreatePage: 15 | def __init__(self, html_name): 16 | self.html_name = html_name 17 | self.base = ''' 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 65 | 66 | 67 | ''' 68 | 69 | '''生成数据''' 70 | def collect_data(self, nodes, edges): 71 | node_dict = {node: index for index, node in enumerate(nodes)} 72 | data_nodes = [] 73 | data_edges = [] 74 | for node, id in node_dict.items(): 75 | data = {} 76 | data["group"] = 'Event' 77 | data["id"] = id 78 | data["label"] = node 79 | data_nodes.append(data) 80 | 81 | for edge in edges: 82 | data = {} 83 | data['from'] = node_dict.get(edge[0]) 84 | data['label'] = 'is-a' 85 | data['to'] = node_dict.get(edge[1]) 86 | data_edges.append(data) 87 | return data_nodes, data_edges 88 | 89 | '''生成html文件''' 90 | def create_html(self, data_nodes, data_edges): 91 | f = open('{0}.html'.format(self.html_name), 'w+') 92 | html = self.base.replace('data_nodes', str(data_nodes)).replace('data_edges', str(data_edges)) 93 | f.write(html) 94 | f.close() 95 | 96 | 97 | '''图谱展示''' 98 | class EventGraph: 99 | def __init__(self, relfile, html_name): 100 | relfile = relfile 101 | self.html_name = html_name 102 | self.event_dict, self.node_dict = self.collect_events(relfile) 103 | 104 | '''统计事件频次''' 105 | def collect_events(self, relfile): 106 | event_dict = {} 107 | node_dict = {} 108 | for line in open(relfile): 109 | event = line.strip() 110 | print(event) 111 | if not event: 112 | continue 113 | nodes = event.split('->') 114 | for node in nodes: 115 | if node not in node_dict: 116 | node_dict[node] = 1 117 | else: 118 | node_dict[node] += 1 119 | 120 | if event not in event_dict: 121 | event_dict[event] = 1 122 | else: 123 | event_dict[event] += 1 124 | 125 | return event_dict, node_dict 126 | 127 | '''过滤低频事件,构建事件图谱''' 128 | def filter_events(self, event_dict, node_dict): 129 | edges = [] 130 | nodes = [] 131 | for event in sorted(event_dict.items(), key=lambda asd: asd[1], reverse=True)[:2000]: 132 | e1 = event[0].split('->')[0] 133 | e2 = event[0].split('->')[1] 134 | if e1 in node_dict and e2 in node_dict: 135 | nodes.append(e1) 136 | nodes.append(e2) 137 | edges.append([e1, e2]) 138 | else: 139 | continue 140 | return edges, nodes 141 | 142 | '''调用VIS插件,进行事件图谱展示''' 143 | def show_graph(self): 144 | edges, nodes = self.filter_events(self.event_dict, self.node_dict) 145 | handler = CreatePage(self.html_name) 146 | data_nodes, data_edges = handler.collect_data(nodes, edges) 147 | handler.create_html(data_nodes, data_edges) 148 | 149 | class BaiduBaike: 150 | def get_html(self, url): 151 | return request.urlopen(url).read().decode('utf-8').replace(' ', '') 152 | 153 | def info_extract_baidu(self, word): # 百度百科 154 | url = "http://baike.baidu.com/item/%s" % parse.quote(word) 155 | print(url) 156 | selector = etree.HTML(self.get_html(url)) 157 | info_list = list() 158 | info_list.append(self.extract_baidu(selector)) 159 | polysemantics = self.checkbaidu_polysemantic(selector) 160 | if polysemantics: 161 | info_list += polysemantics 162 | infos = [info for info in info_list if len(info) > 2] 163 | 164 | return infos 165 | 166 | def extract_baidu(self, selector): 167 | info_data = {} 168 | if selector.xpath('//h2/text()'): 169 | info_data['current_semantic'] = selector.xpath('//h2/text()')[0].replace('    ', '').replace('(','').replace(')','') 170 | else: 171 | info_data['current_semantic'] = '' 172 | if info_data['current_semantic'] == '目录': 173 | info_data['current_semantic'] = '' 174 | 175 | info_data['tags'] = [item.replace('\n', '') for item in selector.xpath('//span[@class="taglist"]/text()')] 176 | if selector.xpath("//div[starts-with(@class,'basic-info')]"): 177 | for li_result in selector.xpath("//div[starts-with(@class,'basic-info')]")[0].xpath('./dl'): 178 | attributes = [attribute.xpath('string(.)').replace('\n', '') for attribute in li_result.xpath('./dt')] 179 | values = [value.xpath('string(.)').replace('\n', '') for value in li_result.xpath('./dd')] 180 | for item in zip(attributes, values): 181 | info_data[item[0].replace('    ', '')] = item[1].replace('    ', '') 182 | return info_data 183 | 184 | def checkbaidu_polysemantic(self, selector): 185 | semantics = ['https://baike.baidu.com' + sem for sem in 186 | selector.xpath("//ul[starts-with(@class,'polysemantList-wrapper')]/li/a/@href")] 187 | names = [name for name in selector.xpath("//ul[starts-with(@class,'polysemantList-wrapper')]/li/a/text()")] 188 | info_list = [] 189 | if semantics: 190 | for item in zip(names, semantics): 191 | selector = etree.HTML(self.get_html(item[1])) 192 | info_data = self.extract_baidu(selector) 193 | info_data['current_semantic'] = item[0].replace('    ', '').replace('(','').replace(')','') 194 | if info_data: 195 | info_list.append(info_data) 196 | return info_list 197 | 198 | class HudongBaike: 199 | def get_html(self, url): 200 | return request.urlopen(url).read().decode('utf-8').replace(' ', '') 201 | 202 | def info_extract_hudong(self, word): # 互动百科 203 | url = "http://www.baike.com/wiki/%s" % parse.quote(word) 204 | print(url) 205 | selector = etree.HTML(self.get_html(url)) 206 | info_list = list() 207 | info_data = self.extract_hudong(selector) 208 | if selector.xpath('//li[@class="current"]/strong/text()'): 209 | info_data['current_semantic'] = selector.xpath('//li[@class="current"]/strong/text()')[0].replace('    ', '').replace('(','').replace(')','') 210 | else: 211 | info_data['current_semantic'] = '' 212 | info_list.append(info_data) 213 | polysemantics = self.checkhudong_polysemantic(selector) 214 | if polysemantics: 215 | info_list += polysemantics 216 | infos = [info for info in info_list if len(info) > 2] 217 | return infos 218 | 219 | def extract_hudong(self, selector): 220 | info_data = {} 221 | info_data['desc'] = selector.xpath('//div[@id="content"]')[0].xpath('string(.)') 222 | info_data['intro'] = selector.xpath('//div[@class="summary"]')[0].xpath('string(.)').replace('编辑摘要', '') 223 | info_data['tags'] = [item.replace('\n', '') for item in selector.xpath('//p[@id="openCatp"]/a/text()')] 224 | for info in selector.xpath('//td'): 225 | attribute = info.xpath('./strong/text()') 226 | val = info.xpath('./span') 227 | if attribute and val: 228 | value = val[0].xpath('string(.)') 229 | info_data[attribute[0].replace(':','')] = value.replace('\n','').replace(' ','').replace('    ', '') 230 | return info_data 231 | 232 | def checkhudong_polysemantic(self, selector): 233 | semantics = [sem for sem in selector.xpath("//ul[@id='polysemyAll']/li/a/@href") if 'doc_title' not in sem] 234 | names = [name for name in selector.xpath("//ul[@id='polysemyAll']/li/a/text()")] 235 | info_list = list() 236 | if semantics: 237 | for item in zip(names, semantics): 238 | selector = etree.HTML(self.get_html(item[1])) 239 | info_data = self.extract_hudong(selector) 240 | info_data['current_semantic'] = item[0].replace('(','').replace(')','') 241 | if info_data: 242 | info_list.append(info_data) 243 | return info_list 244 | 245 | class SougouBaike: 246 | def get_html(self, url): 247 | return request.urlopen(url).read().decode('utf-8').replace(' ', '') 248 | 249 | def find_sofouid(self, word): 250 | url = "http://baike.sogou.com/Search.e?sp=S%s" % parse.quote(word) 251 | print(url) 252 | selector = etree.HTML(self.get_html(url)) 253 | id = selector.xpath('//h2/a/@href')[0].split(';')[0] 254 | info_url = "http://baike.sogou.com/%s"%id 255 | return info_url 256 | 257 | def info_extract_sogou(self, word): 258 | info_url = self.find_sofouid(word) 259 | selector = etree.HTML(self.get_html(info_url)) 260 | info_list = list() 261 | info_data = self.extract_sogou(selector) 262 | if selector.xpath('//li[@class="current_item"]/text()'): 263 | info_data['current_semantic'] = selector.xpath('//li[@class="current_item"]/text()')[0].replace('    ', '').replace('(','').replace(')','') 264 | else: 265 | info_data['current_semantic'] = '' 266 | 267 | info_list.append(info_data) 268 | polysemantics = self.checksogou_polysemantic(selector) 269 | if polysemantics: 270 | info_list += polysemantics 271 | infos = [info for info in info_list if len(info) > 2] 272 | return infos 273 | 274 | def extract_sogou(self, selector): 275 | info_data = {} 276 | info_data['tags'] = [item.replace('\n', '') for item in selector.xpath('//div[@class="relevant_wrap"]/a/text()')] 277 | if selector.xpath('//li[@class="current_item"]/text()'): 278 | info_data['current_semantic'] = selector.xpath('//li[@class="current_item"]/text()')[0].replace('    ', '').replace('(','').replace(')','') 279 | else: 280 | info_data['current_semantic'] = '' 281 | tables = selector.xpath('//table[@class="abstract_list"]') 282 | for table in tables: 283 | attributes = table.xpath('./tbody/tr/th/text()') 284 | values = [td.xpath('string(.)') for td in table.xpath('./tbody/tr/td')] 285 | for item in zip(attributes, values): 286 | info_data[item[0].replace(' ', '').replace('\xa0','')] = item[1].replace('    ', '') 287 | return info_data 288 | 289 | def checksogou_polysemantic(self, selector): 290 | semantics = ['http://baike.sogou.com' + sem.split('?')[0] for sem in selector.xpath("//ol[@class='semantic_item_list']/li/a/@href")] 291 | names = [name for name in selector.xpath("//ol[@class='semantic_item_list']/li/a/text()")] 292 | info_list = list() 293 | if semantics: 294 | for item in zip(names, semantics): 295 | selector = etree.HTML(self.get_html(item[1])) 296 | info_data = self.extract_sogou(selector) 297 | info_data['current_semantic'] = item[0].replace('(','').replace(')','') 298 | if info_data: 299 | info_list.append(info_data) 300 | return info_list 301 | 302 | class SemanticBaike: 303 | def __init__(self): 304 | cur = '/'.join(os.path.realpath(__file__).split('/')[:-1]) 305 | self.tmp_file = os.path.join(cur, 'word_concept.txt') 306 | 307 | '''根据instance本身抽取其概念''' 308 | def extract_concept(self, word): 309 | wds = [w.word for w in pseg.cut(word) if w.flag[0] in ['n']] 310 | if not wds: 311 | return '' 312 | else: 313 | return wds[-1] 314 | 315 | '''对三大百科得到的semantic概念进行对齐''' 316 | def extract_main(self, word): 317 | f = open(self.tmp_file, 'w+') 318 | baidu = BaiduBaike() 319 | hudong = HudongBaike() 320 | sogou = SougouBaike() 321 | semantic_dict = {} 322 | semantics = [] 323 | tuples = [] 324 | concepts_all = [] 325 | 326 | baidu_info = [[i['current_semantic'], i['tags']] for i in baidu.info_extract_baidu(word)] 327 | hudong_info = [[i['current_semantic'], i['tags']] for i in hudong.info_extract_hudong(word)] 328 | sogou_info = [[i['current_semantic'], i['tags']] for i in sogou.info_extract_sogou(word)] 329 | semantics += baidu_info 330 | semantics += hudong_info 331 | semantics += sogou_info 332 | for i in semantics: 333 | instance = i[0] 334 | concept = i[1] 335 | if not instance: 336 | continue 337 | if instance not in semantic_dict: 338 | semantic_dict[instance] = concept 339 | else: 340 | semantic_dict[instance] += concept 341 | 342 | # 对从百科知识库中抽取得到的上下位关系进行抽取 343 | 344 | for instance, concepts in semantic_dict.items(): 345 | concepts = set([i for i in concepts if i not in ['', ' ']]) 346 | concept_pre = self.extract_concept(instance) 347 | concepts_all += concepts 348 | concepts_all += [concept_pre] 349 | tuples.append([word, instance]) 350 | tuples.append([instance, concept_pre]) 351 | for concept in concepts: 352 | tuples.append([instance, concept]) 353 | 354 | # 对词汇本身上下位义进行上下位抽取 355 | tmps = [[i, j] for i in concepts_all for j in concepts_all if j in i and i and j] 356 | tuples += tmps 357 | 358 | for tuple in tuples: 359 | if tuple[0] != tuple[1]: 360 | f.write('->'.join(tuple) + '\n') 361 | f.close() 362 | print(tuples) 363 | handler = EventGraph(self.tmp_file, word) 364 | handler.show_graph() 365 | 366 | 367 | def show_graph(): 368 | cur = '/'.join(os.path.realpath(__file__).split('/')[:-1]) 369 | concept_file = os.path.join(cur, 'baike_concept.txt') 370 | handler = EventGraph(concept_file, 'baike_concept') 371 | handler.show_graph() 372 | 373 | 374 | if __name__ == '__main__': 375 | handler = SemanticBaike() 376 | handler.extract_main('苹果') 377 | 378 | # handler.walk_concept_chain('西瓜') 379 | 380 | 381 | -------------------------------------------------------------------------------- /extract_baike/VIS/dist/vis.min.css: -------------------------------------------------------------------------------- 1 | .vis-background,.vis-labelset,.vis-timeline{overflow:hidden}.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:9pt}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:90pt;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:75pt}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;height:13px;padding:1px;margin:0;pointer-events:none}.vis-panel,.vis-timeline{padding:0;box-sizing:border-box}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:transparent;width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380', GradientType=0 );box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8', GradientType=0 )}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:1pc;width:1pc;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:1pc;width:1pc;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:9pt;margin-top:-9pt}.vis-timeline{position:relative;border:1px solid #bfbfbf;margin:0}.vis-panel{position:absolute;margin:0}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-itemset,.vis-labelset,.vis-labelset .vis-label{position:relative;box-sizing:border-box}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-labelset .vis-label{left:0;top:0;width:100%;color:#4d4d4d;border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-itemset{padding:0;margin:0}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block}.vis-item.vis-point.vis-selected,.vis-item.vis-selected{background-color:#FFF785}.vis-item.vis-selected{border-color:#FFC200;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-delete{background:url(img/timeline/delete.png) center no-repeat;position:absolute;width:24px;height:24px;top:-4px;right:-24px;cursor:pointer}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-current-time{background-color:#FF7F6E;width:2px;z-index:1}.vis-custom-time{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}div.vis-network div.vis-manipulation{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0 );position:absolute;left:0;top:0;width:100%;height:30px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:15px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{position:relative;top:-7px;font-family:verdana;font-size:9pt;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:0 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.vis-network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;font-color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.vis-color-picker{position:absolute;margin-top:-140px;margin-left:30px;width:293px;height:425px;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow:after,div.vis-color-picker div.vis-arrow:before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=0 )}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{width:140px;height:20px;top:380px;font-size:10px;color:rgba(0,0,0,.4);line-height:20px;position:absolute;vertical-align:middle}div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:159px;text-align:right;padding-right:2px}div.vis-color-picker div.vis-initial-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:10px;text-align:left;padding-left:2px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px} -------------------------------------------------------------------------------- /extract_kb/VIS/dist/vis.min.css: -------------------------------------------------------------------------------- 1 | .vis-background,.vis-labelset,.vis-timeline{overflow:hidden}.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:9pt}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:90pt;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:75pt}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;height:13px;padding:1px;margin:0;pointer-events:none}.vis-panel,.vis-timeline{padding:0;box-sizing:border-box}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:transparent;width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380', GradientType=0 );box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8', GradientType=0 )}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:1pc;width:1pc;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:1pc;width:1pc;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:9pt;margin-top:-9pt}.vis-timeline{position:relative;border:1px solid #bfbfbf;margin:0}.vis-panel{position:absolute;margin:0}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-itemset,.vis-labelset,.vis-labelset .vis-label{position:relative;box-sizing:border-box}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-labelset .vis-label{left:0;top:0;width:100%;color:#4d4d4d;border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-itemset{padding:0;margin:0}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block}.vis-item.vis-point.vis-selected,.vis-item.vis-selected{background-color:#FFF785}.vis-item.vis-selected{border-color:#FFC200;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-delete{background:url(img/timeline/delete.png) center no-repeat;position:absolute;width:24px;height:24px;top:-4px;right:-24px;cursor:pointer}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-current-time{background-color:#FF7F6E;width:2px;z-index:1}.vis-custom-time{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}div.vis-network div.vis-manipulation{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0 );position:absolute;left:0;top:0;width:100%;height:30px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:15px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{position:relative;top:-7px;font-family:verdana;font-size:9pt;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:0 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.vis-network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;font-color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.vis-color-picker{position:absolute;margin-top:-140px;margin-left:30px;width:293px;height:425px;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow:after,div.vis-color-picker div.vis-arrow:before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=0 )}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{width:140px;height:20px;top:380px;font-size:10px;color:rgba(0,0,0,.4);line-height:20px;position:absolute;vertical-align:middle}div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:159px;text-align:right;padding-right:2px}div.vis-color-picker div.vis-initial-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:10px;text-align:left;padding-left:2px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px} -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 80 | 81 | 82 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 154 | 155 | 171 | 172 | 182 | 183 | 199 | 200 | 211 | 212 | 230 | 231 | 249 | 250 | 270 | 271 | 292 | 293 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 330 | 331 | 332 | 333 | 1533821451119 334 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 367 | 370 | 371 | 372 | 374 | 375 | 376 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | -------------------------------------------------------------------------------- /extract_baike/VIS/dist/vis.css: -------------------------------------------------------------------------------- 1 | .vis .overlay { 2 | position: absolute; 3 | top: 0; 4 | left: 0; 5 | width: 100%; 6 | height: 100%; 7 | 8 | /* Must be displayed above for example selected Timeline items */ 9 | z-index: 10; 10 | } 11 | 12 | .vis-active { 13 | box-shadow: 0 0 10px #86d5f8; 14 | } 15 | 16 | /* override some bootstrap styles screwing up the timelines css */ 17 | 18 | .vis [class*="span"] { 19 | min-height: 0; 20 | width: auto; 21 | } 22 | 23 | div.vis-configuration { 24 | position:relative; 25 | display:block; 26 | float:left; 27 | font-size:12px; 28 | } 29 | 30 | div.vis-configuration-wrapper { 31 | display:block; 32 | width:700px; 33 | } 34 | 35 | 36 | div.vis-configuration.vis-config-option-container{ 37 | display:block; 38 | width:495px; 39 | background-color: #ffffff; 40 | border:2px solid #f7f8fa; 41 | border-radius:4px; 42 | margin-top:20px; 43 | left:10px; 44 | padding-left:5px; 45 | } 46 | 47 | div.vis-configuration.vis-config-button{ 48 | display:block; 49 | width:495px; 50 | height:25px; 51 | vertical-align: middle; 52 | line-height:25px; 53 | background-color: #f7f8fa; 54 | border:2px solid #ceced0; 55 | border-radius:4px; 56 | margin-top:20px; 57 | left:10px; 58 | padding-left:5px; 59 | cursor: pointer; 60 | margin-bottom:30px; 61 | } 62 | 63 | div.vis-configuration.vis-config-button.hover{ 64 | background-color: #4588e6; 65 | border:2px solid #214373; 66 | color:#ffffff; 67 | } 68 | 69 | div.vis-configuration.vis-config-item{ 70 | display:block; 71 | float:left; 72 | width:495px; 73 | height:25px; 74 | vertical-align: middle; 75 | line-height:25px; 76 | } 77 | 78 | 79 | div.vis-configuration.vis-config-item.vis-config-s2{ 80 | left:10px; 81 | background-color: #f7f8fa; 82 | padding-left:5px; 83 | border-radius:3px; 84 | } 85 | div.vis-configuration.vis-config-item.vis-config-s3{ 86 | left:20px; 87 | background-color: #e4e9f0; 88 | padding-left:5px; 89 | border-radius:3px; 90 | } 91 | div.vis-configuration.vis-config-item.vis-config-s4{ 92 | left:30px; 93 | background-color: #cfd8e6; 94 | padding-left:5px; 95 | border-radius:3px; 96 | } 97 | 98 | div.vis-configuration.vis-config-header{ 99 | font-size:18px; 100 | font-weight: bold; 101 | } 102 | 103 | div.vis-configuration.vis-config-label{ 104 | width:120px; 105 | height:25px; 106 | line-height: 25px; 107 | } 108 | 109 | div.vis-configuration.vis-config-label.vis-config-s3{ 110 | width:110px; 111 | } 112 | div.vis-configuration.vis-config-label.vis-config-s4{ 113 | width:100px; 114 | } 115 | 116 | div.vis-configuration.vis-config-colorBlock{ 117 | top:1px; 118 | width:30px; 119 | height:19px; 120 | border:1px solid #444444; 121 | border-radius:2px; 122 | padding:0px; 123 | margin:0px; 124 | cursor:pointer; 125 | } 126 | 127 | input.vis-configuration.vis-config-checkbox { 128 | left:-5px; 129 | } 130 | 131 | 132 | input.vis-configuration.vis-config-rangeinput{ 133 | position:relative; 134 | top:-5px; 135 | width:60px; 136 | height:13px; 137 | padding:1px; 138 | margin:0; 139 | pointer-events:none; 140 | } 141 | 142 | input.vis-configuration.vis-config-range{ 143 | /*removes default webkit styles*/ 144 | -webkit-appearance: none; 145 | 146 | /*fix for FF unable to apply focus style bug */ 147 | border: 0px solid white; 148 | background-color:rgba(0,0,0,0); 149 | 150 | /*required for proper track sizing in FF*/ 151 | width: 300px; 152 | height:20px; 153 | } 154 | input.vis-configuration.vis-config-range::-webkit-slider-runnable-track { 155 | width: 300px; 156 | height: 5px; 157 | background: #dedede; /* Old browsers */ 158 | background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */ 159 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */ 160 | background: -webkit-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */ 161 | background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */ 162 | background: -ms-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* IE10+ */ 163 | background: linear-gradient(to bottom, #dedede 0%,#c8c8c8 99%); /* W3C */ 164 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */ 165 | 166 | border: 1px solid #999999; 167 | box-shadow: #aaaaaa 0px 0px 3px 0px; 168 | border-radius: 3px; 169 | } 170 | input.vis-configuration.vis-config-range::-webkit-slider-thumb { 171 | -webkit-appearance: none; 172 | border: 1px solid #14334b; 173 | height: 17px; 174 | width: 17px; 175 | border-radius: 50%; 176 | background: #3876c2; /* Old browsers */ 177 | background: -moz-linear-gradient(top, #3876c2 0%, #385380 100%); /* FF3.6+ */ 178 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3876c2), color-stop(100%,#385380)); /* Chrome,Safari4+ */ 179 | background: -webkit-linear-gradient(top, #3876c2 0%,#385380 100%); /* Chrome10+,Safari5.1+ */ 180 | background: -o-linear-gradient(top, #3876c2 0%,#385380 100%); /* Opera 11.10+ */ 181 | background: -ms-linear-gradient(top, #3876c2 0%,#385380 100%); /* IE10+ */ 182 | background: linear-gradient(to bottom, #3876c2 0%,#385380 100%); /* W3C */ 183 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380',GradientType=0 ); /* IE6-9 */ 184 | box-shadow: #111927 0px 0px 1px 0px; 185 | margin-top: -7px; 186 | } 187 | input.vis-configuration.vis-config-range:focus { 188 | outline: none; 189 | } 190 | input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track { 191 | background: #9d9d9d; /* Old browsers */ 192 | background: -moz-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* FF3.6+ */ 193 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9d9d9d), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */ 194 | background: -webkit-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */ 195 | background: -o-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* Opera 11.10+ */ 196 | background: -ms-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* IE10+ */ 197 | background: linear-gradient(to bottom, #9d9d9d 0%,#c8c8c8 99%); /* W3C */ 198 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */ 199 | } 200 | 201 | input.vis-configuration.vis-config-range::-moz-range-track { 202 | width: 300px; 203 | height: 10px; 204 | background: #dedede; /* Old browsers */ 205 | background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */ 206 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */ 207 | background: -webkit-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */ 208 | background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */ 209 | background: -ms-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* IE10+ */ 210 | background: linear-gradient(to bottom, #dedede 0%,#c8c8c8 99%); /* W3C */ 211 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */ 212 | 213 | border: 1px solid #999999; 214 | box-shadow: #aaaaaa 0px 0px 3px 0px; 215 | border-radius: 3px; 216 | } 217 | input.vis-configuration.vis-config-range::-moz-range-thumb { 218 | border: none; 219 | height: 16px; 220 | width: 16px; 221 | 222 | border-radius: 50%; 223 | background: #385380; 224 | } 225 | 226 | /*hide the outline behind the border*/ 227 | input.vis-configuration.vis-config-range:-moz-focusring{ 228 | outline: 1px solid white; 229 | outline-offset: -1px; 230 | } 231 | 232 | input.vis-configuration.vis-config-range::-ms-track { 233 | width: 300px; 234 | height: 5px; 235 | 236 | /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ 237 | background: transparent; 238 | 239 | /*leave room for the larger thumb to overflow with a transparent border */ 240 | border-color: transparent; 241 | border-width: 6px 0; 242 | 243 | /*remove default tick marks*/ 244 | color: transparent; 245 | } 246 | input.vis-configuration.vis-config-range::-ms-fill-lower { 247 | background: #777; 248 | border-radius: 10px; 249 | } 250 | input.vis-configuration.vis-config-range::-ms-fill-upper { 251 | background: #ddd; 252 | border-radius: 10px; 253 | } 254 | input.vis-configuration.vis-config-range::-ms-thumb { 255 | border: none; 256 | height: 16px; 257 | width: 16px; 258 | border-radius: 50%; 259 | background: #385380; 260 | } 261 | input.vis-configuration.vis-config-range:focus::-ms-fill-lower { 262 | background: #888; 263 | } 264 | input.vis-configuration.vis-config-range:focus::-ms-fill-upper { 265 | background: #ccc; 266 | } 267 | 268 | .vis-configuration-popup { 269 | position: absolute; 270 | background: rgba(57, 76, 89, 0.85); 271 | border: 2px solid #f2faff; 272 | line-height:30px; 273 | height:30px; 274 | width:150px; 275 | text-align:center; 276 | color: #ffffff; 277 | font-size:14px; 278 | border-radius:4px; 279 | -webkit-transition: opacity 0.3s ease-in-out; 280 | -moz-transition: opacity 0.3s ease-in-out; 281 | transition: opacity 0.3s ease-in-out; 282 | } 283 | .vis-configuration-popup:after, .vis-configuration-popup:before { 284 | left: 100%; 285 | top: 50%; 286 | border: solid transparent; 287 | content: " "; 288 | height: 0; 289 | width: 0; 290 | position: absolute; 291 | pointer-events: none; 292 | } 293 | 294 | .vis-configuration-popup:after { 295 | border-color: rgba(136, 183, 213, 0); 296 | border-left-color: rgba(57, 76, 89, 0.85); 297 | border-width: 8px; 298 | margin-top: -8px; 299 | } 300 | .vis-configuration-popup:before { 301 | border-color: rgba(194, 225, 245, 0); 302 | border-left-color: #f2faff; 303 | border-width: 12px; 304 | margin-top: -12px; 305 | } 306 | 307 | .vis-timeline { 308 | position: relative; 309 | border: 1px solid #bfbfbf; 310 | 311 | overflow: hidden; 312 | padding: 0; 313 | margin: 0; 314 | 315 | box-sizing: border-box; 316 | } 317 | 318 | 319 | .vis-panel { 320 | position: absolute; 321 | 322 | padding: 0; 323 | margin: 0; 324 | 325 | box-sizing: border-box; 326 | } 327 | 328 | .vis-panel.vis-center, 329 | .vis-panel.vis-left, 330 | .vis-panel.vis-right, 331 | .vis-panel.vis-top, 332 | .vis-panel.vis-bottom { 333 | border: 1px #bfbfbf; 334 | } 335 | 336 | .vis-panel.vis-center, 337 | .vis-panel.vis-left, 338 | .vis-panel.vis-right { 339 | border-top-style: solid; 340 | border-bottom-style: solid; 341 | overflow: hidden; 342 | } 343 | 344 | .vis-panel.vis-center, 345 | .vis-panel.vis-top, 346 | .vis-panel.vis-bottom { 347 | border-left-style: solid; 348 | border-right-style: solid; 349 | } 350 | 351 | .vis-background { 352 | overflow: hidden; 353 | } 354 | 355 | .vis-panel > .vis-content { 356 | position: relative; 357 | } 358 | 359 | .vis-panel .vis-shadow { 360 | position: absolute; 361 | width: 100%; 362 | height: 1px; 363 | box-shadow: 0 0 10px rgba(0,0,0,0.8); 364 | /* TODO: find a nice way to ensure vis-shadows are drawn on top of items 365 | z-index: 1; 366 | */ 367 | } 368 | 369 | .vis-panel .vis-shadow.vis-top { 370 | top: -1px; 371 | left: 0; 372 | } 373 | 374 | .vis-panel .vis-shadow.vis-bottom { 375 | bottom: -1px; 376 | left: 0; 377 | } 378 | 379 | .vis-labelset { 380 | position: relative; 381 | 382 | overflow: hidden; 383 | 384 | box-sizing: border-box; 385 | } 386 | 387 | .vis-labelset .vis-label { 388 | position: relative; 389 | left: 0; 390 | top: 0; 391 | width: 100%; 392 | color: #4d4d4d; 393 | 394 | box-sizing: border-box; 395 | } 396 | 397 | .vis-labelset .vis-label { 398 | border-bottom: 1px solid #bfbfbf; 399 | } 400 | 401 | .vis-labelset .vis-label.draggable { 402 | cursor: pointer; 403 | } 404 | 405 | .vis-labelset .vis-label:last-child { 406 | border-bottom: none; 407 | } 408 | 409 | .vis-labelset .vis-label .vis-inner { 410 | display: inline-block; 411 | padding: 5px; 412 | } 413 | 414 | .vis-labelset .vis-label .vis-inner.vis-hidden { 415 | padding: 0; 416 | } 417 | 418 | 419 | .vis-itemset { 420 | position: relative; 421 | padding: 0; 422 | margin: 0; 423 | 424 | box-sizing: border-box; 425 | } 426 | 427 | .vis-itemset .vis-background, 428 | .vis-itemset .vis-foreground { 429 | position: absolute; 430 | width: 100%; 431 | height: 100%; 432 | overflow: visible; 433 | } 434 | 435 | .vis-axis { 436 | position: absolute; 437 | width: 100%; 438 | height: 0; 439 | left: 0; 440 | z-index: 1; 441 | } 442 | 443 | .vis-foreground .vis-group { 444 | position: relative; 445 | box-sizing: border-box; 446 | border-bottom: 1px solid #bfbfbf; 447 | } 448 | 449 | .vis-foreground .vis-group:last-child { 450 | border-bottom: none; 451 | } 452 | 453 | .vis-overlay { 454 | position: absolute; 455 | top: 0; 456 | left: 0; 457 | width: 100%; 458 | height: 100%; 459 | z-index: 10; 460 | } 461 | 462 | .vis-item { 463 | position: absolute; 464 | color: #1A1A1A; 465 | border-color: #97B0F8; 466 | border-width: 1px; 467 | background-color: #D5DDF6; 468 | display: inline-block; 469 | /*overflow: hidden;*/ 470 | } 471 | 472 | .vis-item.vis-selected { 473 | border-color: #FFC200; 474 | background-color: #FFF785; 475 | 476 | /* z-index must be higher than the z-index of custom time bar and current time bar */ 477 | z-index: 2; 478 | } 479 | 480 | .vis-editable.vis-selected { 481 | cursor: move; 482 | } 483 | 484 | .vis-item.vis-point.vis-selected { 485 | background-color: #FFF785; 486 | } 487 | 488 | .vis-item.vis-box { 489 | text-align: center; 490 | border-style: solid; 491 | border-radius: 2px; 492 | } 493 | 494 | .vis-item.vis-point { 495 | background: none; 496 | } 497 | 498 | .vis-item.vis-dot { 499 | position: absolute; 500 | padding: 0; 501 | border-width: 4px; 502 | border-style: solid; 503 | border-radius: 4px; 504 | } 505 | 506 | .vis-item.vis-range { 507 | border-style: solid; 508 | border-radius: 2px; 509 | box-sizing: border-box; 510 | } 511 | 512 | .vis-item.vis-background { 513 | border: none; 514 | background-color: rgba(213, 221, 246, 0.4); 515 | box-sizing: border-box; 516 | padding: 0; 517 | margin: 0; 518 | } 519 | 520 | .vis-item .vis-item-overflow { 521 | position: relative; 522 | width: 100%; 523 | height: 100%; 524 | padding: 0; 525 | margin: 0; 526 | overflow: hidden; 527 | } 528 | 529 | .vis-item.vis-range .vis-item-content { 530 | position: relative; 531 | display: inline-block; 532 | } 533 | 534 | .vis-item.vis-background .vis-item-content { 535 | position: absolute; 536 | display: inline-block; 537 | } 538 | 539 | .vis-item.vis-line { 540 | padding: 0; 541 | position: absolute; 542 | width: 0; 543 | border-left-width: 1px; 544 | border-left-style: solid; 545 | } 546 | 547 | .vis-item .vis-item-content { 548 | white-space: nowrap; 549 | box-sizing: border-box; 550 | padding: 5px; 551 | } 552 | 553 | .vis-item .vis-delete { 554 | background: url('img/timeline/delete.png') no-repeat center; 555 | position: absolute; 556 | width: 24px; 557 | height: 24px; 558 | top: -4px; 559 | right: -24px; 560 | cursor: pointer; 561 | } 562 | 563 | .vis-item.vis-range .vis-drag-left { 564 | position: absolute; 565 | width: 24px; 566 | max-width: 20%; 567 | min-width: 2px; 568 | height: 100%; 569 | top: 0; 570 | left: -4px; 571 | 572 | cursor: w-resize; 573 | } 574 | 575 | .vis-item.vis-range .vis-drag-right { 576 | position: absolute; 577 | width: 24px; 578 | max-width: 20%; 579 | min-width: 2px; 580 | height: 100%; 581 | top: 0; 582 | right: -4px; 583 | 584 | cursor: e-resize; 585 | } 586 | 587 | .vis-time-axis { 588 | position: relative; 589 | overflow: hidden; 590 | } 591 | 592 | .vis-time-axis.vis-foreground { 593 | top: 0; 594 | left: 0; 595 | width: 100%; 596 | } 597 | 598 | .vis-time-axis.vis-background { 599 | position: absolute; 600 | top: 0; 601 | left: 0; 602 | width: 100%; 603 | height: 100%; 604 | } 605 | 606 | .vis-time-axis .vis-text { 607 | position: absolute; 608 | color: #4d4d4d; 609 | padding: 3px; 610 | overflow: hidden; 611 | box-sizing: border-box; 612 | 613 | white-space: nowrap; 614 | } 615 | 616 | .vis-time-axis .vis-text.vis-measure { 617 | position: absolute; 618 | padding-left: 0; 619 | padding-right: 0; 620 | margin-left: 0; 621 | margin-right: 0; 622 | visibility: hidden; 623 | } 624 | 625 | .vis-time-axis .vis-grid.vis-vertical { 626 | position: absolute; 627 | border-left: 1px solid; 628 | } 629 | 630 | .vis-time-axis .vis-grid.vis-minor { 631 | border-color: #e5e5e5; 632 | } 633 | 634 | .vis-time-axis .vis-grid.vis-major { 635 | border-color: #bfbfbf; 636 | } 637 | 638 | .vis-current-time { 639 | background-color: #FF7F6E; 640 | width: 2px; 641 | z-index: 1; 642 | } 643 | .vis-custom-time { 644 | background-color: #6E94FF; 645 | width: 2px; 646 | cursor: move; 647 | z-index: 1; 648 | } 649 | .vis-timeline { 650 | /* 651 | -webkit-transition: height .4s ease-in-out; 652 | transition: height .4s ease-in-out; 653 | */ 654 | } 655 | 656 | .vis-panel { 657 | /* 658 | -webkit-transition: height .4s ease-in-out, top .4s ease-in-out; 659 | transition: height .4s ease-in-out, top .4s ease-in-out; 660 | */ 661 | } 662 | 663 | .vis-axis { 664 | /* 665 | -webkit-transition: top .4s ease-in-out; 666 | transition: top .4s ease-in-out; 667 | */ 668 | } 669 | 670 | /* TODO: get animation working nicely 671 | 672 | .vis-item { 673 | -webkit-transition: top .4s ease-in-out; 674 | transition: top .4s ease-in-out; 675 | } 676 | 677 | .vis-item.line { 678 | -webkit-transition: height .4s ease-in-out, top .4s ease-in-out; 679 | transition: height .4s ease-in-out, top .4s ease-in-out; 680 | } 681 | /**/ 682 | 683 | .vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal { 684 | position: absolute; 685 | width: 100%; 686 | height: 0; 687 | border-bottom: 1px solid; 688 | } 689 | 690 | .vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor { 691 | border-color: #e5e5e5; 692 | } 693 | 694 | .vis-panel.vis-background.vis-horizontal .vis-grid.vis-major { 695 | border-color: #bfbfbf; 696 | } 697 | 698 | 699 | .vis-data-axis .vis-y-axis.vis-major { 700 | width: 100%; 701 | position: absolute; 702 | color: #4d4d4d; 703 | white-space: nowrap; 704 | } 705 | 706 | .vis-data-axis .vis-y-axis.vis-major.vis-measure { 707 | padding: 0; 708 | margin: 0; 709 | border: 0; 710 | visibility: hidden; 711 | width: auto; 712 | } 713 | 714 | 715 | .vis-data-axis .vis-y-axis.vis-minor { 716 | position: absolute; 717 | width: 100%; 718 | color: #bebebe; 719 | white-space: nowrap; 720 | } 721 | 722 | .vis-data-axis .vis-y-axis.vis-minor.vis-measure { 723 | padding: 0; 724 | margin: 0; 725 | border: 0; 726 | visibility: hidden; 727 | width: auto; 728 | } 729 | 730 | .vis-data-axis .vis-y-axis.vis-title { 731 | position: absolute; 732 | color: #4d4d4d; 733 | white-space: nowrap; 734 | bottom: 20px; 735 | text-align: center; 736 | } 737 | 738 | .vis-data-axis .vis-y-axis.vis-title.vis-measure { 739 | padding: 0; 740 | margin: 0; 741 | visibility: hidden; 742 | width: auto; 743 | } 744 | 745 | .vis-data-axis .vis-y-axis.vis-title.vis-left { 746 | bottom: 0; 747 | -webkit-transform-origin: left top; 748 | -moz-transform-origin: left top; 749 | -ms-transform-origin: left top; 750 | -o-transform-origin: left top; 751 | transform-origin: left bottom; 752 | -webkit-transform: rotate(-90deg); 753 | -moz-transform: rotate(-90deg); 754 | -ms-transform: rotate(-90deg); 755 | -o-transform: rotate(-90deg); 756 | transform: rotate(-90deg); 757 | } 758 | 759 | .vis-data-axis .vis-y-axis.vis-title.vis-right { 760 | bottom: 0; 761 | -webkit-transform-origin: right bottom; 762 | -moz-transform-origin: right bottom; 763 | -ms-transform-origin: right bottom; 764 | -o-transform-origin: right bottom; 765 | transform-origin: right bottom; 766 | -webkit-transform: rotate(90deg); 767 | -moz-transform: rotate(90deg); 768 | -ms-transform: rotate(90deg); 769 | -o-transform: rotate(90deg); 770 | transform: rotate(90deg); 771 | } 772 | 773 | .vis-legend { 774 | background-color: rgba(247, 252, 255, 0.65); 775 | padding: 5px; 776 | border: 1px solid #b3b3b3; 777 | box-shadow: 2px 2px 10px rgba(154, 154, 154, 0.55); 778 | } 779 | 780 | .vis-legend-text { 781 | /*font-size: 10px;*/ 782 | white-space: nowrap; 783 | display: inline-block 784 | } 785 | .vis-graph-group0 { 786 | fill:#4f81bd; 787 | fill-opacity:0; 788 | stroke-width:2px; 789 | stroke: #4f81bd; 790 | } 791 | 792 | .vis-graph-group1 { 793 | fill:#f79646; 794 | fill-opacity:0; 795 | stroke-width:2px; 796 | stroke: #f79646; 797 | } 798 | 799 | .vis-graph-group2 { 800 | fill: #8c51cf; 801 | fill-opacity:0; 802 | stroke-width:2px; 803 | stroke: #8c51cf; 804 | } 805 | 806 | .vis-graph-group3 { 807 | fill: #75c841; 808 | fill-opacity:0; 809 | stroke-width:2px; 810 | stroke: #75c841; 811 | } 812 | 813 | .vis-graph-group4 { 814 | fill: #ff0100; 815 | fill-opacity:0; 816 | stroke-width:2px; 817 | stroke: #ff0100; 818 | } 819 | 820 | .vis-graph-group5 { 821 | fill: #37d8e6; 822 | fill-opacity:0; 823 | stroke-width:2px; 824 | stroke: #37d8e6; 825 | } 826 | 827 | .vis-graph-group6 { 828 | fill: #042662; 829 | fill-opacity:0; 830 | stroke-width:2px; 831 | stroke: #042662; 832 | } 833 | 834 | .vis-graph-group7 { 835 | fill:#00ff26; 836 | fill-opacity:0; 837 | stroke-width:2px; 838 | stroke: #00ff26; 839 | } 840 | 841 | .vis-graph-group8 { 842 | fill:#ff00ff; 843 | fill-opacity:0; 844 | stroke-width:2px; 845 | stroke: #ff00ff; 846 | } 847 | 848 | .vis-graph-group9 { 849 | fill: #8f3938; 850 | fill-opacity:0; 851 | stroke-width:2px; 852 | stroke: #8f3938; 853 | } 854 | 855 | .vis-timeline .vis-fill { 856 | fill-opacity:0.1; 857 | stroke: none; 858 | } 859 | 860 | 861 | .vis-timeline .vis-bar { 862 | fill-opacity:0.5; 863 | stroke-width:1px; 864 | } 865 | 866 | .vis-timeline .vis-point { 867 | stroke-width:2px; 868 | fill-opacity:1.0; 869 | } 870 | 871 | 872 | .vis-timeline .vis-legend-background { 873 | stroke-width:1px; 874 | fill-opacity:0.9; 875 | fill: #ffffff; 876 | stroke: #c2c2c2; 877 | } 878 | 879 | 880 | .vis-timeline .vis-outline { 881 | stroke-width:1px; 882 | fill-opacity:1; 883 | fill: #ffffff; 884 | stroke: #e5e5e5; 885 | } 886 | 887 | .vis-timeline .vis-icon-fill { 888 | fill-opacity:0.3; 889 | stroke: none; 890 | } 891 | 892 | div.vis-network div.vis-manipulation { 893 | border-width: 0; 894 | border-bottom: 1px; 895 | border-style:solid; 896 | border-color: #d6d9d8; 897 | background: #ffffff; /* Old browsers */ 898 | background: -moz-linear-gradient(top, #ffffff 0%, #fcfcfc 48%, #fafafa 50%, #fcfcfc 100%); /* FF3.6+ */ 899 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(48%,#fcfcfc), color-stop(50%,#fafafa), color-stop(100%,#fcfcfc)); /* Chrome,Safari4+ */ 900 | background: -webkit-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Chrome10+,Safari5.1+ */ 901 | background: -o-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Opera 11.10+ */ 902 | background: -ms-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* IE10+ */ 903 | background: linear-gradient(to bottom, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* W3C */ 904 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc',GradientType=0 ); /* IE6-9 */ 905 | 906 | position: absolute; 907 | left: 0; 908 | top: 0; 909 | width: 100%; 910 | height: 30px; 911 | } 912 | 913 | div.vis-network div.vis-edit-mode { 914 | position:absolute; 915 | left: 0; 916 | top: 15px; 917 | height: 30px; 918 | } 919 | 920 | /* FIXME: shouldn't the vis-close button be a child of the vis-manipulation div? */ 921 | 922 | div.vis-network div.vis-close { 923 | position:absolute; 924 | right: 0; 925 | top: 0; 926 | width: 30px; 927 | height: 30px; 928 | 929 | background-position: 20px 3px; 930 | background-repeat: no-repeat; 931 | background-image: url("img/network/cross.png"); 932 | cursor: pointer; 933 | -webkit-touch-callout: none; 934 | -webkit-user-select: none; 935 | -khtml-user-select: none; 936 | -moz-user-select: none; 937 | -ms-user-select: none; 938 | user-select: none; 939 | } 940 | 941 | div.vis-network div.vis-close:hover { 942 | opacity: 0.6; 943 | } 944 | 945 | div.vis-network div.vis-manipulation div.vis-button, 946 | div.vis-network div.vis-edit-mode div.vis-button { 947 | position:relative; 948 | top:-7px; 949 | font-family: verdana; 950 | font-size: 12px; 951 | -moz-border-radius: 15px; 952 | border-radius: 15px; 953 | display:inline-block; 954 | background-position: 0px 0px; 955 | background-repeat:no-repeat; 956 | height:24px; 957 | margin: 0px 0px 0px 10px; 958 | vertical-align:middle; 959 | cursor: pointer; 960 | padding: 0px 8px 0px 8px; 961 | -webkit-touch-callout: none; 962 | -webkit-user-select: none; 963 | -khtml-user-select: none; 964 | -moz-user-select: none; 965 | -ms-user-select: none; 966 | user-select: none; 967 | } 968 | 969 | div.vis-network div.vis-manipulation div.vis-button:hover { 970 | box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.20); 971 | } 972 | 973 | div.vis-network div.vis-manipulation div.vis-button:active { 974 | box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.50); 975 | } 976 | 977 | div.vis-network div.vis-manipulation div.vis-button.vis-back { 978 | background-image: url("img/network/backIcon.png"); 979 | } 980 | 981 | div.vis-network div.vis-manipulation div.vis-button.vis-none:hover { 982 | box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0); 983 | cursor: default; 984 | } 985 | div.vis-network div.vis-manipulation div.vis-button.vis-none:active { 986 | box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0); 987 | } 988 | div.vis-network div.vis-manipulation div.vis-button.vis-none { 989 | padding: 0; 990 | } 991 | div.vis-network div.vis-manipulation div.notification { 992 | margin: 2px; 993 | font-weight: bold; 994 | } 995 | 996 | div.vis-network div.vis-manipulation div.vis-button.vis-add { 997 | background-image: url("img/network/addNodeIcon.png"); 998 | } 999 | 1000 | div.vis-network div.vis-manipulation div.vis-button.vis-edit, 1001 | div.vis-network div.vis-edit-mode div.vis-button.vis-edit { 1002 | background-image: url("img/network/editIcon.png"); 1003 | } 1004 | 1005 | div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode { 1006 | background-color: #fcfcfc; 1007 | border: 1px solid #cccccc; 1008 | } 1009 | 1010 | div.vis-network div.vis-manipulation div.vis-button.vis-connect { 1011 | background-image: url("img/network/connectIcon.png"); 1012 | } 1013 | 1014 | div.vis-network div.vis-manipulation div.vis-button.vis-delete { 1015 | background-image: url("img/network/deleteIcon.png"); 1016 | } 1017 | /* top right bottom left */ 1018 | div.vis-network div.vis-manipulation div.vis-label, 1019 | div.vis-network div.vis-edit-mode div.vis-label { 1020 | margin: 0 0 0 23px; 1021 | line-height: 25px; 1022 | } 1023 | div.vis-network div.vis-manipulation div.vis-separator-line { 1024 | display:inline-block; 1025 | width:1px; 1026 | height:20px; 1027 | background-color: #bdbdbd; 1028 | margin: 5px 7px 0 15px; 1029 | } 1030 | 1031 | /* TODO: is this redundant? 1032 | div.network-navigation_wrapper { 1033 | position: absolute; 1034 | left: 0; 1035 | top: 0; 1036 | width: 100%; 1037 | height: 100%; 1038 | } 1039 | */ 1040 | div.vis-network-tooltip { 1041 | position: absolute; 1042 | visibility: hidden; 1043 | padding: 5px; 1044 | white-space: nowrap; 1045 | 1046 | font-family: verdana; 1047 | font-size:14px; 1048 | font-color:#000000; 1049 | background-color: #f5f4ed; 1050 | 1051 | -moz-border-radius: 3px; 1052 | -webkit-border-radius: 3px; 1053 | border-radius: 3px; 1054 | border: 1px solid #808074; 1055 | 1056 | box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2); 1057 | pointer-events: none; 1058 | } 1059 | div.vis-network div.vis-navigation div.vis-button { 1060 | width:34px; 1061 | height:34px; 1062 | -moz-border-radius: 17px; 1063 | border-radius: 17px; 1064 | position:absolute; 1065 | display:inline-block; 1066 | background-position: 2px 2px; 1067 | background-repeat:no-repeat; 1068 | cursor: pointer; 1069 | -webkit-touch-callout: none; 1070 | -webkit-user-select: none; 1071 | -khtml-user-select: none; 1072 | -moz-user-select: none; 1073 | -ms-user-select: none; 1074 | user-select: none; 1075 | } 1076 | 1077 | div.vis-network div.vis-navigation div.vis-button:hover { 1078 | box-shadow: 0 0 3px 3px rgba(56, 207, 21, 0.30); 1079 | } 1080 | 1081 | div.vis-network div.vis-navigation div.vis-button:active { 1082 | box-shadow: 0 0 1px 3px rgba(56, 207, 21, 0.95); 1083 | } 1084 | 1085 | div.vis-network div.vis-navigation div.vis-button.vis-up { 1086 | background-image: url("img/network/upArrow.png"); 1087 | bottom:50px; 1088 | left:55px; 1089 | } 1090 | div.vis-network div.vis-navigation div.vis-button.vis-down { 1091 | background-image: url("img/network/downArrow.png"); 1092 | bottom:10px; 1093 | left:55px; 1094 | } 1095 | div.vis-network div.vis-navigation div.vis-button.vis-left { 1096 | background-image: url("img/network/leftArrow.png"); 1097 | bottom:10px; 1098 | left:15px; 1099 | } 1100 | div.vis-network div.vis-navigation div.vis-button.vis-right { 1101 | background-image: url("img/network/rightArrow.png"); 1102 | bottom:10px; 1103 | left:95px; 1104 | } 1105 | div.vis-network div.vis-navigation div.vis-button.vis-zoomIn { 1106 | background-image: url("img/network/plus.png"); 1107 | bottom:10px; 1108 | right:15px; 1109 | } 1110 | div.vis-network div.vis-navigation div.vis-button.vis-zoomOut { 1111 | background-image: url("img/network/minus.png"); 1112 | bottom:10px; 1113 | right:55px; 1114 | } 1115 | div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends { 1116 | background-image: url("img/network/zoomExtends.png"); 1117 | bottom:50px; 1118 | right:15px; 1119 | } 1120 | 1121 | div.vis-color-picker { 1122 | position:absolute; 1123 | margin-top:-140px; 1124 | margin-left:30px; 1125 | width:293px; 1126 | height:425px; 1127 | padding: 10px; 1128 | border-radius:15px; 1129 | background-color:#ffffff; 1130 | display:none; 1131 | box-shadow: rgba(0,0,0,0.5) 0px 0px 10px 0px; 1132 | } 1133 | 1134 | div.vis-color-picker div.vis-arrow { 1135 | position: absolute; 1136 | top:147px; 1137 | left:5px; 1138 | } 1139 | 1140 | div.vis-color-picker div.vis-arrow:after, 1141 | div.vis-color-picker div.vis-arrow:before { 1142 | right: 100%; 1143 | top: 50%; 1144 | border: solid transparent; 1145 | content: " "; 1146 | height: 0; 1147 | width: 0; 1148 | position: absolute; 1149 | pointer-events: none; 1150 | } 1151 | 1152 | div.vis-color-picker div.vis-arrow:after { 1153 | border-color: rgba(255, 255, 255, 0); 1154 | border-right-color: #ffffff; 1155 | border-width: 30px; 1156 | margin-top: -30px; 1157 | } 1158 | 1159 | div.vis-color-picker div.vis-color { 1160 | position:absolute; 1161 | width: 289px; 1162 | height: 289px; 1163 | cursor: pointer; 1164 | } 1165 | 1166 | 1167 | 1168 | div.vis-color-picker div.vis-brightness { 1169 | position: absolute; 1170 | top:313px; 1171 | } 1172 | 1173 | div.vis-color-picker div.vis-opacity { 1174 | position:absolute; 1175 | top:350px; 1176 | } 1177 | 1178 | div.vis-color-picker div.vis-selector { 1179 | position:absolute; 1180 | top:137px; 1181 | left:137px; 1182 | width:15px; 1183 | height:15px; 1184 | border-radius:15px; 1185 | border:1px solid #ffffff; 1186 | background: #4c4c4c; /* Old browsers */ 1187 | background: -moz-linear-gradient(top, #4c4c4c 0%, #595959 12%, #666666 25%, #474747 39%, #2c2c2c 50%, #000000 51%, #111111 60%, #2b2b2b 76%, #1c1c1c 91%, #131313 100%); /* FF3.6+ */ 1188 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(12%,#595959), color-stop(25%,#666666), color-stop(39%,#474747), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(60%,#111111), color-stop(76%,#2b2b2b), color-stop(91%,#1c1c1c), color-stop(100%,#131313)); /* Chrome,Safari4+ */ 1189 | background: -webkit-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Chrome10+,Safari5.1+ */ 1190 | background: -o-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Opera 11.10+ */ 1191 | background: -ms-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* IE10+ */ 1192 | background: linear-gradient(to bottom, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* W3C */ 1193 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313',GradientType=0 ); /* IE6-9 */ 1194 | } 1195 | 1196 | 1197 | 1198 | div.vis-color-picker div.vis-new-color { 1199 | position:absolute; 1200 | width:140px; 1201 | height:20px; 1202 | border:1px solid rgba(0,0,0,0.1); 1203 | border-radius:5px; 1204 | top:380px; 1205 | left:159px; 1206 | text-align:right; 1207 | padding-right:2px; 1208 | font-size:10px; 1209 | color:rgba(0,0,0,0.4); 1210 | vertical-align:middle; 1211 | line-height:20px; 1212 | 1213 | } 1214 | 1215 | div.vis-color-picker div.vis-initial-color { 1216 | position:absolute; 1217 | width:140px; 1218 | height:20px; 1219 | border:1px solid rgba(0,0,0,0.1); 1220 | border-radius:5px; 1221 | top:380px; 1222 | left:10px; 1223 | text-align:left; 1224 | padding-left:2px; 1225 | font-size:10px; 1226 | color:rgba(0,0,0,0.4); 1227 | vertical-align:middle; 1228 | line-height:20px; 1229 | } 1230 | 1231 | div.vis-color-picker div.vis-label { 1232 | position:absolute; 1233 | width:300px; 1234 | left:10px; 1235 | } 1236 | 1237 | div.vis-color-picker div.vis-label.vis-brightness { 1238 | top:300px; 1239 | } 1240 | 1241 | div.vis-color-picker div.vis-label.vis-opacity { 1242 | top:338px; 1243 | } 1244 | 1245 | div.vis-color-picker div.vis-button { 1246 | position:absolute; 1247 | width:68px; 1248 | height:25px; 1249 | border-radius:10px; 1250 | vertical-align: middle; 1251 | text-align:center; 1252 | line-height: 25px; 1253 | top:410px; 1254 | border:2px solid #d9d9d9; 1255 | background-color: #f7f7f7; 1256 | cursor:pointer; 1257 | } 1258 | 1259 | div.vis-color-picker div.vis-button.vis-cancel { 1260 | /*border:2px solid #ff4e33;*/ 1261 | /*background-color: #ff7761;*/ 1262 | left:5px; 1263 | } 1264 | div.vis-color-picker div.vis-button.vis-load { 1265 | /*border:2px solid #a153e6;*/ 1266 | /*background-color: #cb8dff;*/ 1267 | left:82px; 1268 | } 1269 | div.vis-color-picker div.vis-button.vis-apply { 1270 | /*border:2px solid #4588e6;*/ 1271 | /*background-color: #82b6ff;*/ 1272 | left:159px; 1273 | } 1274 | div.vis-color-picker div.vis-button.vis-save { 1275 | /*border:2px solid #45e655;*/ 1276 | /*background-color: #6dff7c;*/ 1277 | left:236px; 1278 | } 1279 | 1280 | 1281 | div.vis-color-picker input.vis-range { 1282 | width: 290px; 1283 | height:20px; 1284 | } 1285 | 1286 | /* TODO: is this redundant? 1287 | div.vis-color-picker input.vis-range-brightness { 1288 | width: 289px !important; 1289 | } 1290 | 1291 | 1292 | div.vis-color-picker input.vis-saturation-range { 1293 | width: 289px !important; 1294 | }*/ --------------------------------------------------------------------------------