├── 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 |
10 |
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 | 
24 | 长江上下位
25 | 
26 | 孔子上下位
27 | 
28 |
29 |
30 | # 2)基于在线百科的概念抽取
31 | 使用方式:进入extract_baike要查询的词word,指定python Baike_search.py, 会生成相应的html文件,为最终展示结果
32 | # 结果展示
33 | 苹果上下位
34 | 
35 | 小米上下位
36 | 
37 | 姚明上下位
38 | 
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 |
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 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
80 |
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 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 | 1533821451119
334 |
335 |
336 | 1533821451119
337 |
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 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
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 | }*/
--------------------------------------------------------------------------------