├── src
├── test
│ └── resources
│ │ └── .gitkeep
└── main
│ ├── resources
│ ├── models
│ │ └── ORNL-perceptron.bin
│ ├── dictionaries
│ │ ├── token_label_map.ser
│ │ ├── relevant_terms.txt
│ │ └── operating_systems.json
│ └── entity_labels.txt
│ └── java
│ └── gov
│ └── ornl
│ └── stucco
│ ├── entity
│ ├── models
│ │ ├── CyberEntityMention.java
│ │ ├── CyberEntityType.java
│ │ └── Context.java
│ ├── EntityLabeler.java
│ ├── CyberEntityAnnotator.java
│ └── heuristics
│ │ ├── CyberHeuristicAnnotator.java
│ │ ├── models
│ │ └── RegexContext.java
│ │ └── RegexHeuristicLabeler.java
│ └── heurstics
│ └── utils
│ ├── FreebaseEntry.java
│ ├── FreebaseList.java
│ ├── ListLoader.java
│ └── TokenCyberLabelMap.java
├── .gitignore
├── .settings
├── org.eclipse.m2e.core.prefs
└── org.eclipse.jdt.core.prefs
├── .travis.yml
├── .project
├── LICENSE
├── .classpath
├── pom.xml
└── README.md
/src/test/resources/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | *.DS_Store
3 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/src/main/resources/models/ORNL-perceptron.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stucco/entity-extractor/HEAD/src/main/resources/models/ORNL-perceptron.bin
--------------------------------------------------------------------------------
/src/main/resources/dictionaries/token_label_map.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stucco/entity-extractor/HEAD/src/main/resources/dictionaries/token_label_map.ser
--------------------------------------------------------------------------------
/src/main/resources/entity_labels.txt:
--------------------------------------------------------------------------------
1 | * Software
2 | Product
3 | Vendor
4 | Version
5 | * File
6 | Name
7 | * Function
8 | Name
9 | * Vulnerability
10 | Description
11 | Name
12 | CVE
13 | MS
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 | jdk:
3 | - oraclejdk7
4 | - openjdk7
5 | - oraclejdk8
6 | after_success:
7 | - wget https://raw.githubusercontent.com/stucco/test/master/rerun-test.sh
8 | - chmod a+x ./rerun-test.sh
9 | - ./rerun-test.sh
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
3 | org.eclipse.jdt.core.compiler.compliance=1.7
4 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
5 | org.eclipse.jdt.core.compiler.source=1.7
6 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | entity-extractor
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/models/CyberEntityMention.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity.models;
2 |
3 | import edu.stanford.nlp.ie.machinereading.structure.EntityMention;
4 | import edu.stanford.nlp.ie.machinereading.structure.Span;
5 | import edu.stanford.nlp.util.CoreMap;
6 |
7 | public class CyberEntityMention extends EntityMention {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | public CyberEntityMention(String objectId, CoreMap sentence, Span extentSpan, Span headSpan, String type, String subtype, String mentionType) {
12 | super(objectId, sentence, extentSpan, headSpan, type, subtype, mentionType);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | This software is freely distributable under the terms of the MIT License.
2 |
3 | Copyright (c) UT-Battelle, LLC (the "Original Author")
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS, THE U.S. GOVERNMENT, OR UT-BATTELLE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/.classpath:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/models/CyberEntityType.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity.models;
2 |
3 | import java.io.Serializable;
4 |
5 | public class CyberEntityType implements Serializable {
6 |
7 | private static final long serialVersionUID = 2L;
8 | private String cyberType;
9 | private String cyberSubType;
10 |
11 | public CyberEntityType() {
12 | this("O", "O");
13 | }
14 |
15 | public CyberEntityType(String type, String subType) {
16 | this.cyberType = type;
17 | this.cyberSubType = subType;
18 | }
19 |
20 | public String getCyberType() {
21 | return cyberType;
22 | }
23 |
24 | public void setCyberType(String cyberType) {
25 | this.cyberType = cyberType;
26 | }
27 |
28 | public String getCyberSubType() {
29 | return cyberSubType;
30 | }
31 |
32 | public void setCyberSubType(String cyberSubType) {
33 | this.cyberSubType = cyberSubType;
34 | }
35 |
36 | @Override
37 | public String toString() {
38 | if (cyberType.equalsIgnoreCase("O")) {
39 | return cyberType;
40 | }
41 | return cyberType + "." + cyberSubType;
42 | }
43 |
44 | @Override
45 | public int hashCode() {
46 | final int prime = 31;
47 | int result = 1;
48 | result = prime * result
49 | + ((cyberSubType == null) ? 0 : cyberSubType.hashCode());
50 | result = prime * result
51 | + ((cyberType == null) ? 0 : cyberType.hashCode());
52 | return result;
53 | }
54 |
55 | @Override
56 | public boolean equals(Object obj) {
57 | if (this == obj)
58 | return true;
59 | if (obj == null)
60 | return false;
61 | if (getClass() != obj.getClass())
62 | return false;
63 | CyberEntityType other = (CyberEntityType) obj;
64 | if (cyberSubType == null) {
65 | if (other.cyberSubType != null)
66 | return false;
67 | } else if (!cyberSubType.equals(other.cyberSubType))
68 | return false;
69 | if (cyberType == null) {
70 | if (other.cyberType != null)
71 | return false;
72 | } else if (!cyberType.equals(other.cyberType))
73 | return false;
74 | return true;
75 | }
76 |
77 | }
78 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/heurstics/utils/FreebaseEntry.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.heurstics.utils;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | import com.fasterxml.jackson.annotation.JsonGetter;
7 | import com.fasterxml.jackson.annotation.JsonProperty;
8 | import com.fasterxml.jackson.annotation.JsonSetter;
9 |
10 | public class FreebaseEntry implements Serializable {
11 | private static final long serialVersionUID = 1L;
12 |
13 | @JsonProperty("name")
14 | private String name;
15 |
16 | @JsonProperty("/common/topic/alias")
17 | private List aliases;
18 |
19 | @JsonGetter("name")
20 | public String getName() {
21 | return name;
22 | }
23 |
24 | @JsonSetter("name")
25 | public void setName(String name) {
26 | this.name = name;
27 | }
28 |
29 | @JsonGetter("/common/topic/alias")
30 | public List getAliases() {
31 | return aliases;
32 | }
33 |
34 | @JsonSetter("/common/topic/alias")
35 | public void setAliases(List aliases) {
36 | this.aliases = aliases;
37 | }
38 |
39 | public void addAlias(String newAlias) {
40 | this.aliases.add(newAlias);
41 | }
42 |
43 | public boolean contains(String value) {
44 |
45 | if (value.equals((String)name)) {
46 | return true;
47 | }
48 | else if (aliases.contains(value)) {
49 | return true;
50 | }
51 |
52 | return false;
53 | }
54 |
55 | @Override
56 | public String toString() {
57 | return "FreebaseEntry [name=" + name + ", aliases=" + aliases + "]\n";
58 | }
59 |
60 | @Override
61 | public int hashCode() {
62 | final int prime = 31;
63 | int result = 1;
64 | result = prime * result + ((aliases == null) ? 0 : aliases.hashCode());
65 | result = prime * result + ((name == null) ? 0 : name.hashCode());
66 | return result;
67 | }
68 |
69 | @Override
70 | public boolean equals(Object obj) {
71 | if (this == obj)
72 | return true;
73 | if (obj == null)
74 | return false;
75 | if (getClass() != obj.getClass())
76 | return false;
77 | FreebaseEntry other = (FreebaseEntry) obj;
78 | if (aliases == null) {
79 | if (other.aliases != null)
80 | return false;
81 | } else if (!aliases.equals(other.aliases))
82 | return false;
83 | if (name == null) {
84 | if (other.name != null)
85 | return false;
86 | } else if (!name.equals(other.name))
87 | return false;
88 | return true;
89 | }
90 |
91 |
92 |
93 | }
94 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/heurstics/utils/FreebaseList.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.heurstics.utils;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | import com.fasterxml.jackson.annotation.JsonGetter;
7 | import com.fasterxml.jackson.annotation.JsonIgnore;
8 | import com.fasterxml.jackson.annotation.JsonProperty;
9 | import com.fasterxml.jackson.annotation.JsonSetter;
10 |
11 | public class FreebaseList implements Serializable {
12 | private static final long serialVersionUID = 1L;
13 |
14 | @JsonProperty("result")
15 | private List entries;
16 |
17 | @JsonIgnore
18 | private String listType;
19 |
20 | @JsonGetter("result")
21 | public List getEntries() {
22 | return entries;
23 | }
24 |
25 | @JsonSetter("result")
26 | public void setEntries(List entries) {
27 | this.entries = entries;
28 | }
29 |
30 | public void addEntries(FreebaseList anotherList) {
31 | List otherEntries = anotherList.getEntries();
32 | this.entries.addAll(otherEntries);
33 | }
34 |
35 | public String getListType() {
36 | return listType;
37 | }
38 |
39 | public void setListType(String listType) {
40 | this.listType = listType;
41 | }
42 |
43 | public boolean contains(String value) {
44 | for (FreebaseEntry entry : this.entries) {
45 | if (entry.contains(value)) {
46 | return true;
47 | }
48 | }
49 |
50 | return false;
51 | }
52 |
53 | @Override
54 | public String toString() {
55 | return this.listType + ": " + entries;
56 | }
57 |
58 | @Override
59 | public int hashCode() {
60 | final int prime = 31;
61 | int result = 1;
62 | result = prime * result + ((entries == null) ? 0 : entries.hashCode());
63 | result = prime * result
64 | + ((listType == null) ? 0 : listType.hashCode());
65 | return result;
66 | }
67 |
68 | @Override
69 | public boolean equals(Object obj) {
70 | if (this == obj)
71 | return true;
72 | if (obj == null)
73 | return false;
74 | if (getClass() != obj.getClass())
75 | return false;
76 | FreebaseList other = (FreebaseList) obj;
77 | if (entries == null) {
78 | if (other.entries != null)
79 | return false;
80 | } else if (!entries.equals(other.entries))
81 | return false;
82 | if (listType == null) {
83 | if (other.listType != null)
84 | return false;
85 | } else if (!listType.equals(other.listType))
86 | return false;
87 | return true;
88 | }
89 |
90 |
91 |
92 | }
93 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/heurstics/utils/ListLoader.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.heurstics.utils;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.File;
5 | import java.io.FileInputStream;
6 | import java.io.FileNotFoundException;
7 | import java.io.FileReader;
8 | import java.io.IOException;
9 | import java.io.InputStream;
10 | import java.io.InputStreamReader;
11 | import java.util.HashSet;
12 | import java.util.Set;
13 |
14 | import com.fasterxml.jackson.databind.DeserializationFeature;
15 | import com.fasterxml.jackson.databind.ObjectMapper;
16 |
17 | public class ListLoader {
18 | private static ObjectMapper mapper = new ObjectMapper();
19 |
20 | public static FreebaseList loadFreebaseList(String listFile, String listType) {
21 | mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
22 | mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
23 | mapper.configure(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY, true);
24 |
25 | FreebaseList freebaseList = null;
26 | try {
27 | InputStream inputStream = ListLoader.class.getClassLoader().getResourceAsStream(listFile);
28 | freebaseList = mapper.readValue(inputStream, FreebaseList.class);
29 | freebaseList.setListType(listType);
30 | } catch (Exception ex) {
31 | try {
32 | InputStream inputStream = new FileInputStream(new File(listFile));
33 | freebaseList = mapper.readValue(inputStream, FreebaseList.class);
34 | freebaseList.setListType(listType);
35 | } catch (Exception e) {
36 | e.printStackTrace();
37 | }
38 | }
39 |
40 | return freebaseList;
41 | }
42 |
43 | public static Set loadTextList(String textFile) {
44 | Set textList = new HashSet();
45 | try {
46 | BufferedReader reader = new BufferedReader(new InputStreamReader(ListLoader.class.getClassLoader().getResourceAsStream(textFile)));
47 | String term = reader.readLine();
48 | while (term != null) {
49 | textList.add(term);
50 | term = reader.readLine();
51 | }
52 | reader.close();
53 | } catch (Exception ex) {
54 | try {
55 | BufferedReader reader = new BufferedReader(new FileReader(new File(textFile)));
56 | String term = reader.readLine();
57 | while (term != null) {
58 | textList.add(term);
59 | term = reader.readLine();
60 | }
61 | reader.close();
62 | } catch (Exception e) {
63 | e.printStackTrace();
64 | }
65 | }
66 |
67 | return textList;
68 | }
69 |
70 |
71 | public static void main(String[] args) {
72 | // FreebaseList freebaseList = ListLoader.loadFreebaseList("src/main/resources/lists/software_info.json","software");
73 | // System.out.println(freebaseList.toString());
74 | Set relTerms = ListLoader.loadTextList("src/main/resources/lists/relevant_terms.txt");
75 | System.out.println(relTerms);
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 | gov.ornl.stucco
4 | entity-extractor
5 | 1.0.0
6 |
7 | UTF-8
8 | true
9 | gov.ornl.stucco.entity.EntityLabeler
10 |
11 |
12 |
13 | edu.stanford.nlp
14 | stanford-corenlp
15 | 3.4.1
16 |
17 |
18 | edu.stanford.nlp
19 | stanford-corenlp
20 | 3.4.1
21 | models
22 |
23 |
24 | org.apache.opennlp
25 | opennlp-tools
26 | 1.6.0
27 |
28 |
29 | com.fasterxml.jackson.core
30 | jackson-databind
31 | 2.7.0
32 |
33 |
34 | junit
35 | junit
36 | 4.8.1
37 | test
38 |
39 |
40 |
41 |
42 |
43 | src/main/resources
44 |
45 | models/ORNL-perceptron.bin
46 | dictionaries/operating_systems.json
47 | dictionaries/relevant_terms.txt
48 | dictionaries/software_developers.json
49 | dictionaries/software_info.json
50 | dictionaries/token_label_map.ser
51 |
52 |
53 |
54 |
55 |
56 | org.apache.maven.plugins
57 | maven-compiler-plugin
58 | 3.1
59 |
60 | 1.7
61 | 1.7
62 | true
63 | true
64 | true
65 |
66 |
67 |
68 | compile
69 |
70 | compile
71 |
72 |
73 |
74 |
75 |
76 | org.codehaus.mojo
77 | exec-maven-plugin
78 | 1.2.1
79 |
80 |
81 |
82 | exec
83 |
84 |
85 |
86 |
87 | java
88 | true
89 | false
90 | compile
91 | ${main.class}
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/EntityLabeler.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity;
2 |
3 | import java.util.List;
4 | import java.util.Properties;
5 |
6 | import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
7 | import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
8 | import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
9 | import edu.stanford.nlp.ling.CoreLabel;
10 | import edu.stanford.nlp.pipeline.Annotation;
11 | import edu.stanford.nlp.pipeline.StanfordCoreNLP;
12 | import edu.stanford.nlp.trees.TreeCoreAnnotations.TreeAnnotation;
13 | import edu.stanford.nlp.util.CoreMap;
14 | import gov.ornl.stucco.entity.CyberEntityAnnotator.CyberAnnotation;
15 | import gov.ornl.stucco.entity.CyberEntityAnnotator.CyberEntityMentionsAnnotation;
16 |
17 | public class EntityLabeler {
18 |
19 | private StanfordCoreNLP pipeline;
20 | private Properties nlpProps;
21 | private Annotation annotatedDoc;
22 |
23 | public EntityLabeler() {
24 | nlpProps = new Properties();
25 | this.setProperties();
26 | pipeline = new StanfordCoreNLP(this.nlpProps);
27 | }
28 |
29 |
30 | public EntityLabeler(Properties nlpProps) {
31 | this.nlpProps = nlpProps;
32 | pipeline = new StanfordCoreNLP(this.nlpProps);
33 | }
34 |
35 |
36 | private void setProperties() {
37 | nlpProps.setProperty("customAnnotatorClass.cyberentity", "gov.ornl.stucco.entity.CyberEntityAnnotator");
38 | nlpProps.setProperty("customAnnotatorClass.cyberheuristics", "gov.ornl.stucco.entity.heuristics.CyberHeuristicAnnotator");
39 | nlpProps.setProperty("annotators", "tokenize, ssplit, pos, cyberheuristics, cyberentity, lemma, ner, parse");
40 | }
41 |
42 |
43 | public Annotation getAnnotatedDoc(String title, String docText) {
44 | System.err.println("Annotating '" + title + "'...");
45 | annotatedDoc = new Annotation(docText);
46 | pipeline.annotate(annotatedDoc);
47 | return annotatedDoc;
48 | }
49 |
50 |
51 | public static void main(String[] args) {
52 | // String exampleText = "The software developer who inserted a major security flaw into OpenSSL 1.2.4.8, using the file foo/bar/blah.php has said the error was \"quite trivial\" despite the severity of its impact, according to a new report. The Sydney Morning Herald published an interview today with Robin Seggelmann, who added the flawed code to OpenSSL, the world's most popular library for implementing HTTPS encryption in websites, e-mail servers, and applications. The flaw can expose user passwords and potentially the private key used in a website's cryptographic certificate (whether private keys are at risk is still being determined). This is a new paragraph about Apache Tomcat's latest update 7.0.1.";
53 | String exampleText = "Microsoft Windows 7 before SP1 has Sun Java cross-site scripting vulnerability Java SE in file.php (refer to CVE-2014-1234).";
54 | // String exampleText = "Oracle DBRM has vulnerability in ABCD plug-in via abcd.1234 (found on abcd.com).";
55 | EntityLabeler labeler = new EntityLabeler();
56 | Annotation doc = labeler.getAnnotatedDoc("My Doc", exampleText);
57 |
58 | List sentences = doc.get(SentencesAnnotation.class);
59 | for ( CoreMap sentence : sentences) {
60 | for ( CoreLabel token : sentence.get(TokensAnnotation.class)) {
61 | System.out.println(token.get(TextAnnotation.class) + "\t" + token.get(CyberAnnotation.class));
62 | }
63 |
64 | System.out.println("Entities:\n" + sentence.get(CyberEntityMentionsAnnotation.class));
65 |
66 | System.out.println("Parse Tree:\n" + sentence.get(TreeAnnotation.class));
67 | }
68 |
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/src/main/resources/dictionaries/relevant_terms.txt:
--------------------------------------------------------------------------------
1 | MITM
2 | csrf
3 | xss
4 | CSRF
5 | Use-after-free
6 | XSS
7 | 0day
8 | access
9 | account
10 | application
11 | arbitrary
12 | attack
13 | attacks
14 | attacked
15 | attacker
16 | attackers
17 | authenticate
18 | authenticated
19 | authentication
20 | authorization
21 | blocked
22 | brute-force
23 | bypass
24 | cleartext
25 | commands
26 | configuration
27 | crash
28 | credentials
29 | csrf
30 | ddos
31 | decrypt
32 | decrypted
33 | denial
34 | encrypt
35 | encrypted
36 | encryption
37 | execute
38 | exploit
39 | exposure
40 | fingerprinting
41 | forgery
42 | gain
43 | handlers
44 | hijack
45 | hook
46 | hook-handler
47 | HTTPS
48 | inject
49 | kernel
50 | kernel-mode
51 | local
52 | locale
53 | malware
54 | man-in-the-middle
55 | memory
56 | metacharacters
57 | overflow
58 | overflows
59 | overwrite
60 | password
61 | permission
62 | permissions
63 | plaintext
64 | privileges
65 | remote
66 | requests
67 | scripting
68 | sensitive
69 | signature-based
70 | signedness
71 | SSL
72 | symlink
73 | TLS
74 | truncation
75 | underflow
76 | underflows
77 | user-space
78 | xss
79 | zero-day
80 | integer underflow
81 | Integer underflows
82 | Race condition
83 | SQL commands
84 | SQL injection
85 | Use-after-free vulnerability
86 | access control
87 | access restrictions
88 | application crash
89 | arbitrary Javascript
90 | arbitrary SQL
91 | arbitrary certificate
92 | arbitrary code
93 | arbitrary files
94 | arbitrary password
95 | authentication issues
96 | buffer error
97 | buffer overflow
98 | buffer overrun
99 | bypass authentication
100 | code injection
101 | complete control
102 | credentials management
103 | cross-site forgery
104 | cross-site request
105 | cross-site scripting
106 | cryptographic issues
107 | denial-of-service attack
108 | design error
109 | design errors
110 | dot dot
111 | finger printing
112 | format string
113 | gain privileges
114 | hard links
115 | infinite loop
116 | infinite loops
117 | information disclosure
118 | information leak
119 | inject code
120 | injection vulnerability
121 | input validation
122 | integer overflow
123 | key disclosure
124 | link following
125 | local users
126 | memory exhaustion
127 | memory leak
128 | memory leaks
129 | memory pressure
130 | modify query
131 | numeric error
132 | numeric errors
133 | path traversal
134 | potentially sensitive
135 | race condition
136 | race conditions
137 | remote attacker
138 | remote attackers
139 | replay attack
140 | resource management
141 | segmentation fault
142 | sensitive information
143 | sql injection
144 | symbolic links
145 | symlink attack
146 | transport layer security
147 | traversal vulnerability
148 | weak key
149 | web script
150 | Directory traversal vulnerability
151 | Multiple cross-site request
152 | SQL injection vulnerabilities
153 | SQL injection vulnerability
154 | arbitrary Javascript code
155 | arbitrary PHP code
156 | arbitrary SQL commands
157 | arbitrary web script
158 | buffer boundary error
159 | cross site request
160 | cross site scripting
161 | cross site forgery
162 | cross-site request forgery
163 | denial of service
164 | elevation of privilege
165 | execute arbitrary SQL
166 | execute arbitrary code
167 | execute arbitrary commands
168 | execute Javascript code
169 | format string specifiers
170 | format string vulnerability
171 | gain administrative access
172 | hijack the authentication
173 | inject arbitrary code
174 | modify query logic
175 | obtain sensitive information
176 | os command injection
177 | remote authenticated users
178 | remote code execution
179 | resource management error
180 | resource management errors
181 | security feature bypass
182 | distributed denial of service
183 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/heurstics/utils/TokenCyberLabelMap.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.heurstics.utils;
2 |
3 | import gov.ornl.stucco.entity.heuristics.CyberHeuristicAnnotator;
4 | import gov.ornl.stucco.entity.models.CyberEntityType;
5 |
6 | import java.io.FileInputStream;
7 | import java.io.FileOutputStream;
8 | import java.io.IOException;
9 | import java.io.InputStream;
10 | import java.io.ObjectInputStream;
11 | import java.io.ObjectOutputStream;
12 | import java.io.Serializable;
13 | import java.util.HashMap;
14 | import java.util.Map;
15 |
16 | /**
17 | * This class will store a map of tokens (i.e. words)
18 | * to a unique cyber label, if during training, every instance
19 | * of the token had only one ground-truth label.
20 | *
21 | * @author k5y
22 | *
23 | */
24 | public class TokenCyberLabelMap implements Serializable {
25 |
26 | private static final long serialVersionUID = 4L;
27 |
28 | private Map labelMap;
29 |
30 | public TokenCyberLabelMap() {
31 | labelMap = new HashMap();
32 | }
33 |
34 | public Map getLabelMap() {
35 | return labelMap;
36 | }
37 |
38 | public void setLabelMap(Map labelMap) {
39 | this.labelMap = labelMap;
40 | }
41 |
42 | public void addLabel(String token, CyberEntityType label) {
43 | labelMap.put(token, label);
44 | }
45 |
46 | public boolean contains(String token) {
47 | return labelMap.containsKey(token);
48 | }
49 |
50 | public CyberEntityType getLabel(String token) {
51 | if (contains(token)) {
52 | return ((CyberEntityType)labelMap.get(token));
53 | }
54 | return null;
55 | }
56 |
57 | public void checkLabels(String token, CyberEntityType newLabel) {
58 | CyberEntityType currentLabel = getLabel(token);
59 | if (currentLabel == null) {
60 | addLabel(token, newLabel);
61 | }
62 | else if ((currentLabel != null) && (!currentLabel.equals(newLabel))) {
63 | this.labelMap.remove(token);
64 | }
65 | }
66 |
67 | public void cleanMap() {
68 | Map tempMap = new HashMap();
69 | tempMap.putAll(labelMap);
70 | for (String token : tempMap.keySet()) {
71 | if ((tempMap.get(token)).equals(CyberHeuristicAnnotator.O)) {
72 | this.labelMap.remove(token);
73 | }
74 | }
75 | }
76 |
77 | @SuppressWarnings("unchecked")
78 | public void loadMap(String mapFile) {
79 | try {
80 | InputStream inStream = TokenCyberLabelMap.class.getClassLoader().getResourceAsStream(mapFile);
81 | ObjectInputStream objStream = new ObjectInputStream(inStream);
82 | labelMap = ((HashMap) objStream.readObject());
83 | objStream.close();
84 | inStream.close();
85 | System.err.println("Token-to-Label map loaded from '" + mapFile + "'");
86 | } catch (Exception e) {
87 | try {
88 | FileInputStream inStream = new FileInputStream(mapFile);
89 | ObjectInputStream objStream = new ObjectInputStream(inStream);
90 | labelMap = ((HashMap) objStream.readObject());
91 | objStream.close();
92 | inStream.close();
93 | System.err.println("Token-to-Label map loaded from '" + mapFile + "'");
94 | } catch (Exception ex) {
95 | System.err.println("WARNING: Token-to-Label map could not be loaded from '" + mapFile + "'");
96 | ex.printStackTrace();
97 | }
98 | }
99 | }
100 |
101 | public void saveMap(String mapFile) {
102 | try {
103 | FileOutputStream outStream = new FileOutputStream(mapFile);
104 | ObjectOutputStream objStream = new ObjectOutputStream(outStream);
105 | objStream.writeObject(labelMap);
106 | objStream.close();
107 | outStream.close();
108 | System.err.println("Token-to-Label map saved as '" + mapFile + "'");
109 | } catch (IOException ex) {
110 | System.err.println("WARNING: Token-to-Label map could not be saved as '" + mapFile + "'");
111 | ex.printStackTrace();
112 | }
113 | }
114 |
115 | @Override
116 | public String toString() {
117 | StringBuilder sb = new StringBuilder();
118 | for (String token : this.labelMap.keySet()) {
119 | sb.append(token);
120 | sb.append("-->");
121 | sb.append(this.labelMap.get(token));
122 | sb.append("\n");
123 | }
124 | return sb.toString();
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Entity Extraction
2 | Library to identify and label cyber-domain entities from unstructured text. This library makes use of [Stanford's CoreNLP] (http://nlp.stanford.edu/software/corenlp.shtml) and [Apache's OpenNLP] (https://opennlp.apache.org) libraries.
3 |
4 | ## Entity Types
5 | * Software
6 | * Vendor
7 | * Product
8 | * Version
9 | * File
10 | * Name
11 | * Function
12 | * Name
13 | * Vulnerability
14 | * Name
15 | * Description
16 | * CVE
17 | * MS
18 |
19 | ## Input
20 | * Trained Apache OpenNLP perceptron model file in binary format that represents a cyber-domain entity model
21 | * Default CoreNLP models for tokenizing, part-of-speech tagging, sentence splitting, and parse-tree building
22 | * Text content of document to be annotated with cyber labels
23 | * Predefined heuristics, including known-entity lists and regular expressions
24 | * Mapping of tokens (i.e. words or punctuation) to a unique label, if found during training
25 |
26 | ## Process
27 | 1. Use the CoreNLP library to tokenize, part-of-speech tag, and build the parse trees of the document's text.
28 | 2. Check the tokens (i.e. words and punctuation) against lists of known entities such as Google's Freebase data sets. If the token is found, label it appropriately.
29 | 3. Attempt to match a token, or set of tokens against regular expressions. If a match is found, then label the token, or set of tokens.
30 | 4. Check token against the token-to-unique-label map and label appropriately, if found.
31 | 5. If the token is still unlabeled, generate features/context for the token, and evaluate them against the maximum entropy model (MEM) to determine the label with the highest probability.
32 |
33 | ### Features / Context Used
34 | * Token (word or punctuation to be labeled)
35 | * Prefix (first 6 characters of token)
36 | * Suffix (last 6 characters of token)
37 | * Part of speech tag
38 | * Match current token against a set of regular expressions
39 | * Match pervious token against a set of regular expressions
40 |
41 | ## Output
42 | An Annotation object that represents the document as a map, where annotator classnames are keys. The document map includes the following values:
43 |
44 | * Text: original raw text
45 | * Sentences: list of sentences
46 | * Sentence: map representing one sentence
47 | * Token: word within the sentence
48 | * POSTag: part-of-speech tag
49 | * CyberEntity: cyber domain label for the token
50 | * ParseTree: sentence structure as a tree
51 |
52 | ## Usage
53 | EntityLabeler labeler = new EntityLabeler();
54 | Annotation doc = labeler.getAnnotatedDoc("My Doc", exampleText);
55 |
56 | List sentences = doc.get(SentencesAnnotation.class);
57 | for ( CoreMap sentence : sentences) {
58 | for ( CoreLabel token : sentence.get(TokensAnnotation.class)) {
59 | System.out.println(token.get(TextAnnotation.class) + "\t" + token.get(PartOfSpeechAnnotation.class) + "\t" + token.get(CyberAnnotation.class));
60 | }
61 |
62 | System.out.println("Parse Tree:\n" + sentence.get(TreeAnnotation.class));
63 | }
64 |
65 | See CoreNLP's [JavaDocs] (http://nlp.stanford.edu/nlp/javadoc/javanlp/), [Usage section] (http://nlp.stanford.edu/software/corenlp.shtml), or OpenNLP's [JavaDocs] (https://opennlp.apache.org/documentation/1.6.0/apidocs/opennlp-tools/index.html) for more information.
66 |
67 | ## License
68 | This software is freely distributable under the terms of the MIT License.
69 |
70 | Copyright (c) UT-Battelle, LLC (the "Original Author")
71 |
72 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
73 |
74 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
75 |
76 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS, THE U.S. GOVERNMENT, OR UT-BATTELLE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
77 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/models/Context.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity.models;
2 |
3 | import java.util.EnumMap;
4 | import java.util.HashMap;
5 | import java.util.Map;
6 | import java.util.regex.Pattern;
7 |
8 | /**
9 | * Represents the context (i.e. features) of a word within a document. The context
10 | * is used to train an averaged perceptron model, as well as evaluate
11 | * a new word against the maximun entropy model.
12 | *
13 | */
14 | public class Context {
15 |
16 | //Used as placeholders if the current word is the first or last in the sentence.
17 | public static final String START_WORD = "_START_";
18 | public static final String END_WORD = "_END_";
19 |
20 | //Regular expression patterns
21 | public static Map regexMap;
22 | static {
23 | regexMap = new HashMap();
24 | regexMap.put(Predicate.REGEX_MS, Pattern.compile("MS[0-9]{2}-[0-9]{3}"));
25 | regexMap.put(Predicate.REGEX_CVE, Pattern.compile("CVE-[0-9]{4}-[0-9]{4}"));
26 | regexMap.put(Predicate.REGEX_0, Pattern.compile("^[0-9]+(\\.|x)+[0-9a-zA-Z\\-.]+$"));
27 | regexMap.put(Predicate.REGEX_1, Pattern.compile("^[0-9.x]{2,}\\.+-[0-9a-zA-Z.]+$"));
28 | regexMap.put(Predicate.REGEX_2, Pattern.compile("^[0-9.x]+\\.?[a-zA-Z.]+$"));
29 | regexMap.put(Predicate.REGEX_3, Pattern.compile("^[0-9.x]+_[a-zA-Z0-9.]+$"));
30 | regexMap.put(Predicate.REGEX_4, Pattern.compile("^[0-9.x]+\\%[0-9a-zA-Z.]+$"));
31 | regexMap.put(Predicate.REGEX_5, Pattern.compile("^[0-9.x]+-([0-9.]+[a-zA-Z0-9.\\-_]*|[a-zA-Z0-9\\-_]*[0-9.]+)$"));
32 | regexMap.put(Predicate.REGEX_1CAP, Pattern.compile("^[A-Z]{1}"));
33 | regexMap.put(Predicate.REGEX_CAP, Pattern.compile("[a-z0-9]+[A-Z]+"));
34 | regexMap.put(Predicate.REGEX_1LB, Pattern.compile("^[0-9]"));
35 | regexMap.put(Predicate.REGEX_LB, Pattern.compile("^.+[0-9]"));
36 | regexMap.put(Predicate.REGEX_PUN, Pattern.compile("[.,\\?/\\-\\[\\]'\";:!@]"));
37 | regexMap.put(Predicate.REGEX__, Pattern.compile("[a-zA-Z0-9]+_"));
38 | regexMap.put(Predicate.REGEX_LPAR, Pattern.compile("^\\("));
39 | regexMap.put(Predicate.REGEX_RPAR, Pattern.compile("\\)$"));
40 | regexMap.put(Predicate.REGEX_RSYM, Pattern.compile("-RRB-"));
41 | regexMap.put(Predicate.REGEX_LSYM, Pattern.compile("-LRB-"));
42 | regexMap.put(Predicate.PREGEX_MS, Pattern.compile("MS[0-9]{2}-[0-9]{3}"));
43 | regexMap.put(Predicate.PREGEX_CVE, Pattern.compile("CVE-[0-9]{4}-[0-9]{4}"));
44 | regexMap.put(Predicate.PREGEX_0, Pattern.compile("^[0-9]+(\\.|x)+[0-9a-zA-Z\\-.]+$"));
45 | regexMap.put(Predicate.PREGEX_1, Pattern.compile("^[0-9.x]{2,}\\.+-[0-9a-zA-Z.]+$"));
46 | regexMap.put(Predicate.PREGEX_2, Pattern.compile("^[0-9.x]+\\.?[a-zA-Z.]+$"));
47 | regexMap.put(Predicate.PREGEX_3, Pattern.compile("^[0-9.x]+_[a-zA-Z0-9.]+$"));
48 | regexMap.put(Predicate.PREGEX_4, Pattern.compile("^[0-9.x]+\\%[0-9a-zA-Z.]+$"));
49 | regexMap.put(Predicate.PREGEX_5, Pattern.compile("^[0-9.x]+-([0-9.]+[a-zA-Z0-9.\\-_]*|[a-zA-Z0-9\\-_]*[0-9.]+)$"));
50 | regexMap.put(Predicate.PREGEX_1CAP, Pattern.compile("^[A-Z]{1}"));
51 | regexMap.put(Predicate.PREGEX_CAP, Pattern.compile("[a-z0-9]+[A-Z]+"));
52 | regexMap.put(Predicate.PREGEX_1LB, Pattern.compile("^[0-9]"));
53 | regexMap.put(Predicate.PREGEX_LB, Pattern.compile("^.+[0-9]"));
54 | regexMap.put(Predicate.PREGEX_PUN, Pattern.compile("[.,\\?/\\-\\[\\]'\";:!@]"));
55 | regexMap.put(Predicate.PREGEX__, Pattern.compile("[a-zA-Z0-9]+_"));
56 | regexMap.put(Predicate.PREGEX_LPAR, Pattern.compile("^\\("));
57 | regexMap.put(Predicate.PREGEX_RPAR, Pattern.compile("\\)$"));
58 | regexMap.put(Predicate.PREGEX_RSYM, Pattern.compile("-RRB-"));
59 | regexMap.put(Predicate.PREGEX_LSYM, Pattern.compile("-LRB-"));
60 | }
61 |
62 |
63 | // Used to keep the context ordering consistent because order is important in OpenNLP
64 | public enum Predicate {
65 | //first 6 characters of current word
66 | PRE("prefix"),
67 | //last 6 characters of current word
68 | SUF("suffix"),
69 | //current word to be labeled
70 | W("word"),
71 | //pos tag of current word
72 | P("pos"),
73 | //current word's heuristic label
74 | HEURISTIC("heuristic-label"),
75 | //current word matches regular expressions
76 | REGEX_MS("regex-MS"),
77 | REGEX_CVE("regex-CVE"),
78 | REGEX_0("regex-0"),
79 | REGEX_1("regex-1"),
80 | REGEX_2("regex-2"),
81 | REGEX_3("regex-3"),
82 | REGEX_4("regex-4"),
83 | REGEX_5("regex-5"),
84 | REGEX_1CAP("regex-1stCap"),
85 | REGEX_CAP("regex-intCap"),
86 | REGEX_1LB("regex-1st#"),
87 | REGEX_LB("regex-int#"),
88 | REGEX_PUN("regex-punct"),
89 | REGEX__("regex-under"),
90 | REGEX_LPAR("regex-lPar"),
91 | REGEX_RPAR("regex-rPar"),
92 | REGEX_RSYM("regex-rParSy"),
93 | REGEX_LSYM("regex-lParSy"),
94 | //previous word matches regular expressions
95 | PREGEX_MS("p_regex-MS"),
96 | PREGEX_CVE("p_regex-CVE"),
97 | PREGEX_0("p_regex-0"),
98 | PREGEX_1("p_regex-1"),
99 | PREGEX_2("p_regex-2"),
100 | PREGEX_3("p_regex-3"),
101 | PREGEX_4("p_regex-4"),
102 | PREGEX_5("p_regex-5"),
103 | PREGEX_1CAP("p_regex-1stCap"),
104 | PREGEX_CAP("p_regex-intCap"),
105 | PREGEX_1LB("p_regex-1st#"),
106 | PREGEX_LB("p_regex-int#"),
107 | PREGEX_PUN("p_regex-punct"),
108 | PREGEX__("p_regex-under"),
109 | PREGEX_LPAR("p_regex-lPar"),
110 | PREGEX_RPAR("p_regex-rPar"),
111 | PREGEX_RSYM("p_regex-rParSy"),
112 | PREGEX_LSYM("p_regex-lParSy");
113 |
114 | private String predicateLabel;
115 |
116 | private Predicate(String predicate) {
117 | this.predicateLabel = predicate;
118 | }
119 |
120 | public String getPredicateLabel() {
121 | return predicateLabel;
122 | }
123 | }
124 |
125 | private Map contextMap;
126 |
127 | /**
128 | * @param currentWord the word
129 | * @param pos the current word's pos
130 | */
131 | public Context(String currentWord, String pos, String heuristicAnnotation, String previousWord) {
132 | contextMap = new EnumMap(Predicate.class);
133 | contextMap.put(Predicate.W, currentWord);
134 | contextMap.put(Predicate.P, pos);
135 | contextMap.put(Predicate.HEURISTIC, heuristicAnnotation);
136 |
137 | String prefix = currentWord;
138 | if (currentWord.length() >= 6) {
139 | prefix = currentWord.substring(0, 6);
140 | }
141 | contextMap.put(Predicate.PRE, prefix);
142 |
143 | String suffix = currentWord;
144 | if (currentWord.length() >= 6) {
145 | suffix = currentWord.substring(currentWord.length()-6);
146 | }
147 | contextMap.put(Predicate.SUF, suffix);
148 |
149 | //loop through regexes for current word, then previous word
150 | for (Predicate pred : Context.regexMap.keySet()) {
151 | Pattern regex = Context.regexMap.get(pred);
152 | if (pred.getPredicateLabel().startsWith("regex_")) {
153 | contextMap.put(pred, Boolean.toString(regex.matcher(currentWord).matches()));
154 | }
155 | else {
156 | contextMap.put(pred, Boolean.toString(regex.matcher(previousWord).matches()));
157 | }
158 | }
159 | }
160 |
161 |
162 | @Override
163 | public String toString() {
164 | StringBuilder sb = new StringBuilder();
165 |
166 | for (Predicate pred : contextMap.keySet()) {
167 | sb.append(contextMap.get(pred));
168 | sb.append(" ");
169 | }
170 |
171 | return sb.toString().trim();
172 | }
173 |
174 |
175 | public String[] toArray() {
176 | String[] contextArray = new String[contextMap.size()];
177 | contextArray = contextMap.values().toArray(contextArray);
178 | return contextArray;
179 | }
180 |
181 | }
182 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/CyberEntityAnnotator.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity;
2 |
3 | import java.io.DataInputStream;
4 | import java.io.File;
5 | import java.util.ArrayList;
6 | import java.util.Collections;
7 | import java.util.HashMap;
8 | import java.util.List;
9 | import java.util.Map;
10 | import java.util.Properties;
11 | import java.util.Set;
12 |
13 | import opennlp.tools.ml.perceptron.BinaryPerceptronModelReader;
14 | import opennlp.tools.ml.perceptron.PerceptronModel;
15 | import edu.stanford.nlp.ie.machinereading.structure.Span;
16 | import edu.stanford.nlp.ling.CoreAnnotation;
17 | import edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation;
18 | import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
19 | import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
20 | import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
21 | import edu.stanford.nlp.ling.CoreLabel;
22 | import edu.stanford.nlp.pipeline.Annotation;
23 | import edu.stanford.nlp.pipeline.Annotator;
24 | import edu.stanford.nlp.util.ArraySet;
25 | import edu.stanford.nlp.util.CoreMap;
26 | import edu.stanford.nlp.util.ErasureUtils;
27 | import edu.stanford.nlp.util.StringUtils;
28 | import gov.ornl.stucco.entity.heuristics.CyberHeuristicAnnotator;
29 | import gov.ornl.stucco.entity.heuristics.CyberHeuristicAnnotator.CyberHeuristicAnnotation;
30 | import gov.ornl.stucco.entity.models.Context;
31 | import gov.ornl.stucco.entity.models.CyberEntityMention;
32 | import gov.ornl.stucco.entity.models.CyberEntityType;
33 |
34 | /**
35 | * This annotator is the second cyber-related annotator in the pipeline. This annotator uses the maximum entropy model to evaluate and label the
36 | * previously-unlabeled tokens.
37 | *
38 | */
39 | public class CyberEntityAnnotator implements Annotator {
40 | public static final String STUCCO_CYBER_ENTITY = "cyberentity";
41 | public static final Requirement CYBER_ENTITY_REQUIREMENT = new Requirement(STUCCO_CYBER_ENTITY);
42 |
43 | private static String modelFilePath = "models/ORNL-perceptron.bin";
44 | private String cyberModelFile;
45 | private PerceptronModel cyberModel;
46 |
47 |
48 | public CyberEntityAnnotator(String className) {
49 | this(className, StringUtils.argsToProperties("-model", modelFilePath));
50 | }
51 |
52 | public CyberEntityAnnotator(String className, Properties config) {
53 | cyberModelFile = config.getProperty("model", modelFilePath);
54 |
55 | System.err.println("Loading model from '" + cyberModelFile + "'");
56 | try {
57 | cyberModel = (PerceptronModel) (new BinaryPerceptronModelReader(new DataInputStream(CyberEntityAnnotator.class.getClassLoader().getResourceAsStream(cyberModelFile)))).getModel();
58 | } catch (Exception e) {
59 | try {
60 | cyberModel = (PerceptronModel) (new BinaryPerceptronModelReader(new File(cyberModelFile))).getModel();
61 | } catch (Exception ex) {
62 | System.err.println("Could not load cyber model from '" + cyberModelFile + "'.");
63 | ex.printStackTrace();
64 | System.exit(1);
65 | }
66 | }
67 | }
68 |
69 | @Override
70 | public void annotate(Annotation annotation) {
71 | System.err.println("Annotating with cyber labels ... ");
72 | Map> entityMentionsMap = new HashMap>();
73 |
74 | if (annotation.has(SentencesAnnotation.class)) {
75 | List tokens = annotation.get(TokensAnnotation.class);
76 | for (int i=0; i= 0) {
92 | previousWord = tokens.get(i-1).get(TextAnnotation.class);
93 | }
94 | Context context = new Context(word, pos, heuristicLabel.toString(), previousWord);
95 | double[] results = cyberModel.eval(context.toArray());
96 | String cyberLabel = cyberModel.getBestOutcome(results);
97 | if (cyberLabel.contains(".")) {
98 | int index = cyberLabel.indexOf(".");
99 | String type = cyberLabel.substring(0, index);
100 | String subType = cyberLabel.substring(index + 1);
101 | label = new CyberEntityType(type, subType);
102 | }
103 | }
104 |
105 | if (label != null) {
106 | //annotate the token with the new cyber label
107 | token.set(CyberAnnotation.class, label);
108 |
109 | if (!label.equals(CyberHeuristicAnnotator.O)) {
110 | //Create new EntityMentions or add to existing one
111 | int sentenceIndex = token.sentIndex();
112 | CoreMap sentence = annotation.get(SentencesAnnotation.class).get(sentenceIndex);
113 | //token indexing starts at 1, while span indexing starts at 0
114 | Span cyberSpan = new Span(token.index()-1, token.index());
115 |
116 | CyberEntityMention cyberMention = new CyberEntityMention(CyberEntityMention.makeUniqueId(), sentence, cyberSpan, cyberSpan, label.getCyberType(), label.getCyberSubType(), null);
117 |
118 | //Add this EntityMentions to the list for its corresponding sentence
119 | List sentEntityList = entityMentionsMap.get(Integer.valueOf(sentenceIndex));
120 | if (sentEntityList == null) {
121 | sentEntityList = new ArrayList();
122 | }
123 |
124 | if (sentEntityList.size() > 1) {
125 | CyberEntityMention latestCyberMention = sentEntityList.get(sentEntityList.size()-1);
126 | if ((latestCyberMention.labelEquals(cyberMention, true)) && (cyberSpan.start() == latestCyberMention.getHeadTokenEnd())) {
127 | latestCyberMention.getHead().expandToInclude(cyberSpan);
128 | }
129 | else {
130 | sentEntityList.add(cyberMention);
131 | }
132 | }
133 | else {
134 | sentEntityList.add(cyberMention);
135 | }
136 |
137 | //update the sentence's EntityMention list
138 | entityMentionsMap.put(Integer.valueOf(sentenceIndex), sentEntityList);
139 | }
140 | }
141 |
142 | }
143 |
144 | //set the EntityMention key for the sentence
145 | for (Integer sentIndex : entityMentionsMap.keySet()) {
146 | CoreMap sentence = annotation.get(SentencesAnnotation.class).get(sentIndex.intValue());
147 | sentence.set(CyberEntityMentionsAnnotation.class, ((List) entityMentionsMap.get(sentIndex)));
148 | }
149 |
150 | }
151 | }
152 |
153 | @Override
154 | public Set requirementsSatisfied() {
155 | return Collections.unmodifiableSet(new ArraySet(CYBER_ENTITY_REQUIREMENT));
156 | }
157 |
158 | @Override
159 | public Set requires() {
160 | Set prerequisites = new ArraySet();
161 | // prerequisites.addAll(Annotator.TOKENIZE_SSPLIT_POS);
162 | prerequisites.add(CyberHeuristicAnnotator.CYBER_HEURISTICS_REQUIREMENT);
163 | return Collections.unmodifiableSet(prerequisites);
164 | }
165 |
166 | /**
167 | * The CyberAnnotation key for getting the STUCCO cyber label of a token.
168 | *
169 | * This key is set on token annotations.
170 | */
171 | public static class CyberAnnotation implements CoreAnnotation {
172 | public Class getType() {
173 | return CyberEntityType.class;
174 | }
175 | }
176 |
177 | /**
178 | * The CyberEntityAnnotation key for getting the STUCCO cyber entities of a sentence.
179 | *
180 | * This key is set on the sentence annotations.
181 | */
182 | public static class CyberEntityMentionsAnnotation implements CoreAnnotation> {
183 | public Class> getType() {
184 | return ErasureUtils.uncheckedCast(List.class);
185 | }
186 | }
187 |
188 | }
189 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/heuristics/CyberHeuristicAnnotator.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity.heuristics;
2 |
3 | import java.util.ArrayList;
4 | import java.util.Collections;
5 | import java.util.List;
6 | import java.util.Properties;
7 | import java.util.Set;
8 |
9 | import edu.stanford.nlp.ling.CoreAnnotation;
10 | import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
11 | import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
12 | import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
13 | import edu.stanford.nlp.ling.CoreLabel;
14 | import edu.stanford.nlp.pipeline.Annotation;
15 | import edu.stanford.nlp.pipeline.Annotator;
16 | import edu.stanford.nlp.util.ArraySet;
17 | import edu.stanford.nlp.util.StringUtils;
18 | import gov.ornl.stucco.entity.models.CyberEntityType;
19 | import gov.ornl.stucco.heurstics.utils.FreebaseList;
20 | import gov.ornl.stucco.heurstics.utils.ListLoader;
21 | import gov.ornl.stucco.heurstics.utils.TokenCyberLabelMap;
22 |
23 | /**
24 | * This is the annotator in the pipeline that uses heuristics to label the cyber domain entities.
25 | *
26 | */
27 | public class CyberHeuristicAnnotator implements Annotator {
28 | public static final String STUCCO_CYBER_HEURISTICS = "cyberheuristics";
29 | public static final Requirement CYBER_HEURISTICS_REQUIREMENT = new Requirement(STUCCO_CYBER_HEURISTICS);
30 |
31 | public static final CyberEntityType O = new CyberEntityType();
32 | public static final CyberEntityType SW_VENDOR = new CyberEntityType("sw", "vendor");
33 | public static final CyberEntityType SW_PRODUCT = new CyberEntityType("sw", "product");
34 | public static final CyberEntityType SW_VERSION = new CyberEntityType("sw", "version");
35 | public static final CyberEntityType FILE_NAME = new CyberEntityType("file", "name");
36 | public static final CyberEntityType FUNCTION_NAME = new CyberEntityType("function", "name");
37 | public static final CyberEntityType VULN_MS = new CyberEntityType("vuln", "ms");
38 | public static final CyberEntityType VULN_NAME = new CyberEntityType("vuln", "name");
39 | public static final CyberEntityType VULN_DESC = new CyberEntityType("vuln", "description");
40 | public static final CyberEntityType VULN_CVE = new CyberEntityType("vuln", "cve");
41 |
42 | private static String swInfoList = "dictionaries/software_info.json";
43 | private static String swDevList = "dictionaries/software_developers.json";
44 | private static String osList = "dictionaries/operating_systems.json";
45 | private static String relTermsList = "dictionaries/relevant_terms.txt";
46 | private static String labelMapPath = "dictionaries/token_label_map.ser";
47 |
48 | private String listFile;
49 | private FreebaseList swProductList;
50 | private FreebaseList swVendorList;
51 | private Set relevantTermsList;
52 | private TokenCyberLabelMap labelMap;
53 | private RegexHeuristicLabeler regexLabeler;
54 |
55 |
56 | public CyberHeuristicAnnotator(String className) {
57 | this(className, StringUtils.argsToProperties("-swProducts", swInfoList, "-swVendors", swDevList, "-swOS", osList, "-vulnDesc", relTermsList, "-labelMap", labelMapPath));
58 | }
59 |
60 | public CyberHeuristicAnnotator(String className, Properties config) {
61 | listFile = config.getProperty("swProducts", swInfoList);
62 | System.err.println("Loading sw_products list from '" + listFile + "'");
63 | swProductList = ListLoader.loadFreebaseList(listFile, SW_PRODUCT.toString());
64 |
65 | listFile = config.getProperty("swVendors", swDevList);
66 | System.err.println("Loading sw_vendors list from '" + listFile + "'");
67 | swVendorList = ListLoader.loadFreebaseList(listFile, SW_VENDOR.toString());
68 |
69 | listFile = config.getProperty("swOS", osList);
70 | System.err.println("Loading sw_products (os) list from '" + listFile + "'");
71 | FreebaseList temp = ListLoader.loadFreebaseList(listFile, SW_PRODUCT.toString());
72 | //os names are considered software products for now, so add them to the same list
73 | if (temp != null) {
74 | swProductList.addEntries(temp);
75 | }
76 |
77 | listFile = config.getProperty("vulnDesc", relTermsList);
78 | System.err.println("Loading vuln_description list from '" + listFile + "'");
79 | relevantTermsList = ListLoader.loadTextList(listFile);
80 |
81 | listFile = config.getProperty("labelMap", labelMapPath);
82 | labelMap = new TokenCyberLabelMap();
83 | labelMap.loadMap(listFile);
84 |
85 | regexLabeler = new RegexHeuristicLabeler();
86 | }
87 |
88 | @Override
89 | public void annotate(Annotation annotation) {
90 | System.err.println("Annotating with heuristic cyber labels ... ");
91 | if (annotation.has(SentencesAnnotation.class)) {
92 | //Known entities heuristics
93 | List tokens = annotation.get(TokensAnnotation.class);
94 | for (CoreLabel token : tokens) {
95 | if (swVendorList.contains(token.get(TextAnnotation.class))) {
96 | token.set(CyberHeuristicAnnotation.class, SW_VENDOR);
97 | }
98 | else if (swProductList.contains(token.get(TextAnnotation.class))) {
99 | token.set(CyberHeuristicAnnotation.class, SW_PRODUCT);
100 | }
101 | else if (relevantTermsList.contains(token.get(TextAnnotation.class))) {
102 | token.set(CyberHeuristicAnnotation.class, VULN_DESC);
103 | }
104 | else {
105 | token.set(CyberHeuristicAnnotation.class, O);
106 | }
107 | }
108 | for (int i=0; i tokenSublist = new ArrayList();
180 | if (i == 0) {
181 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
182 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
183 | tokenSublist.addAll(tokens.subList(0, 5));
184 | }
185 | else if (i == 1) {
186 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
187 | tokenSublist.addAll(tokens.subList(0, 6));
188 | }
189 | else {
190 | tokenSublist.addAll(tokens.subList(i-2, (Math.min(tokens.size(),i+5))));
191 | if (i == tokens.size()-1) {
192 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
193 | }
194 | if (i >= tokens.size()-2) {
195 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
196 | }
197 | if (i >= tokens.size()-3) {
198 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
199 | }
200 | if (i >= tokens.size()-4) {
201 | tokenSublist.add(RegexHeuristicLabeler.EMPTY_CORELABEL);
202 | }
203 | }
204 | regexLabeler.annotate(tokenSublist);
205 | }
206 |
207 | //Token-to-unique-label map check
208 | for (CoreLabel token : tokens) {
209 | if ((token.get(CyberHeuristicAnnotation.class).equals(O)) && (labelMap.contains(token.get(TextAnnotation.class)))) {
210 | CyberEntityType uniqueLabel = labelMap.getLabel(token.get(TextAnnotation.class));
211 | token.set(CyberHeuristicAnnotation.class, uniqueLabel);
212 | }
213 | }
214 | }
215 | }
216 |
217 | @Override
218 | public Set requirementsSatisfied() {
219 | return Collections.unmodifiableSet(new ArraySet(CYBER_HEURISTICS_REQUIREMENT));
220 | }
221 |
222 | @Override
223 | public Set requires() {
224 | return Annotator.TOKENIZE_SSPLIT_POS;
225 | }
226 |
227 | /**
228 | * The CyberAnnotation key for getting the STUCCO cyber label of a token.
229 | *
230 | * This key is set on token annotations.
231 | */
232 | public static class CyberHeuristicAnnotation implements CoreAnnotation {
233 | public Class getType() {
234 | return CyberEntityType.class;
235 | }
236 | }
237 | }
238 |
--------------------------------------------------------------------------------
/src/main/java/gov/ornl/stucco/entity/heuristics/models/RegexContext.java:
--------------------------------------------------------------------------------
1 | package gov.ornl.stucco.entity.heuristics.models;
2 |
3 | import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
4 | import edu.stanford.nlp.ling.CoreLabel;
5 | import gov.ornl.stucco.entity.heuristics.CyberHeuristicAnnotator.CyberHeuristicAnnotation;
6 | import gov.ornl.stucco.entity.heuristics.RegexHeuristicLabeler;
7 | import gov.ornl.stucco.entity.models.CyberEntityType;
8 |
9 | import java.util.ArrayList;
10 | import java.util.HashMap;
11 | import java.util.List;
12 | import java.util.Map;
13 | import java.util.regex.Pattern;
14 |
15 | public class RegexContext {
16 |
17 | public enum WordKey {
18 | P2_Word,
19 | P_Word,
20 | Word,
21 | N_Word,
22 | N2_Word,
23 | N3_Word,
24 | N4_Word
25 | }
26 |
27 | public enum LabelKey {
28 | P2_Label,
29 | P_Label,
30 | Label,
31 | N_Label,
32 | N2_Label,
33 | N3_Label,
34 | N4_Label
35 | }
36 |
37 | // Test a single- or multiple-word phrase against multiple patterns
38 | // The list of patterns represent an OR operation (i.e. the word/phrase is considered
39 | // a match if it matches pattern0 or pattern1 etc.)
40 | // The exception to this is if there are NOT patterns involved,
41 | // then all the patterns use AND.
42 | private Map, List> wordRegexMap;
43 | // Map defining which of the pattern(s) should match and which should not
44 | // This map corresponds to wordRegexMap's Pattern list
45 | // The default is false - this is NOT a notOp; the word(s) need to match the pattern
46 | private Map, List> notOpMap;
47 | // Test a word's cyber-domain label against a pattern
48 | // All key's must match their corresponding pattern to label the set of tokens
49 | private Map labelRegexMap;
50 | // Provide the word's cyber-domain label if it matches
51 | // all these pattern criteria
52 | private Map annotationMap;
53 |
54 | public RegexContext() {
55 | this.wordRegexMap = new HashMap, List>();
56 | this.notOpMap = new HashMap, List>();
57 | this.labelRegexMap = new HashMap();
58 | this.annotationMap = new HashMap();
59 | }
60 |
61 |
62 | public Map, List> getWordRegexMap() {
63 | return wordRegexMap;
64 | }
65 |
66 |
67 | public void setWordRegexMap(Map, List> wordRegexMap) {
68 | this.wordRegexMap = wordRegexMap;
69 | setDefaultNotOpMap();
70 | }
71 |
72 |
73 | public void addWordPatternLists(List keyList, List patternList) {
74 | this.wordRegexMap.put(keyList, patternList);
75 | setDefaultNotOpList(patternList);
76 | }
77 |
78 |
79 | public void addWordPatternList(WordKey key, List patternList) {
80 | List keyList = new ArrayList();
81 | keyList.add(key);
82 | addWordPatternLists(keyList, patternList);
83 | }
84 |
85 |
86 | public void addWordPattern(WordKey key, Pattern pattern) {
87 | List keyList = new ArrayList();
88 | keyList.add(key);
89 | List patternList = new ArrayList();
90 | patternList.add(pattern);
91 | addWordPatternLists(keyList, patternList);
92 | }
93 |
94 |
95 | public void addWordListPattern(List keyList, Pattern pattern) {
96 | List patternList = new ArrayList();
97 | patternList.add(pattern);
98 | addWordPatternLists(keyList, patternList);
99 | }
100 |
101 |
102 | public Map, List> getNotOpMap() {
103 | return notOpMap;
104 | }
105 |
106 |
107 | public void setNotOpMap(Map, List> notOpMap) {
108 | this.notOpMap = notOpMap;
109 | }
110 |
111 |
112 | public void addNotOpLists(List keyList, List notOpList) {
113 | this.notOpMap.put(this.wordRegexMap.get(keyList), notOpList);
114 | }
115 |
116 |
117 | public void addPatternLists(List keyList, List patternList, List notOpList) {
118 | this.wordRegexMap.put(keyList, patternList);
119 | this.notOpMap.put(patternList, notOpList);
120 | }
121 |
122 |
123 | public Map getLabelRegexMap() {
124 | return labelRegexMap;
125 | }
126 |
127 |
128 | public void setLabelRegexMap(Map labelRegexMap) {
129 | this.labelRegexMap = labelRegexMap;
130 | }
131 |
132 |
133 | public void addLabelRegex(LabelKey key, Pattern pattern) {
134 | this.labelRegexMap.put(key, pattern);
135 | }
136 |
137 |
138 | public Map getHeuristicLabelMap() {
139 | return annotationMap;
140 | }
141 |
142 |
143 | public void setHeuristicLabelMap(Map cyberLabelMap) {
144 | this.annotationMap = cyberLabelMap;
145 | }
146 |
147 |
148 | public void addHeuristicLabel(LabelKey key, CyberEntityType entity) {
149 | this.annotationMap.put(key, entity);
150 | }
151 |
152 |
153 | public void setDefaultNotOpList(List patternList) {
154 | List boolList = new ArrayList();
155 | for (int i=0; i key : this.wordRegexMap.values()) {
164 | setDefaultNotOpList(key);
165 | }
166 | }
167 |
168 |
169 | public boolean evaluate(List tokens) {
170 | for (List regexKeyList : wordRegexMap.keySet()) {
171 | // obtain the index of the words to be used in this regex and gather the token instances
172 | // of the corresponding indices
173 | int low, high;
174 | low = high = regexKeyList.get(0).ordinal();
175 | for (WordKey wk : regexKeyList) {
176 | if (wk.ordinal() < low) {
177 | low = wk.ordinal();
178 | }
179 | if (wk.ordinal() > high) {
180 | high = wk.ordinal();
181 | }
182 | }
183 | List sublist = tokens.subList(low, high+1);
184 | // If one of the tokens is an EMPTY_CORELABEL,
185 | // then, this regex will not match
186 | if (sublist.contains(RegexHeuristicLabeler.EMPTY_CORELABEL)) {
187 | return false;
188 | }
189 | String compareString = getPhrase(sublist);
190 | List patternList = wordRegexMap.get(regexKeyList);
191 | List notOpList = notOpMap.get(patternList);
192 | // If this list of patterns includes a NOT pattern, then
193 | // treat as AND operations between
194 | // Otherwise, treat pattern list as OR
195 | if (notOpList.contains(Boolean.TRUE)) {
196 | for (int i=0; i tokens) {
250 | for (LabelKey key : annotationMap.keySet()) {
251 | CoreLabel token = tokens.get(key.ordinal());
252 | token.set(CyberHeuristicAnnotation.class, annotationMap.get(key));
253 | }
254 | }
255 |
256 |
257 | private String getPhrase(List tokens) {
258 | StringBuilder sb = new StringBuilder();
259 | for (int i=0; i patternList0 = new ArrayList() {
59 | private static final long serialVersionUID = 1L;
60 |
61 | {
62 | add(Pattern.compile("^[0-9]+(\\.|x)+[0-9a-zA-Z\\-.]{1,}$"));
63 | add(Pattern.compile("^[0-9.x]{2,}\\.+-[0-9a-zA-Z.]+$"));
64 | add(Pattern.compile("^[0-9.x]+\\.?[a-zA-Z.]+$"));
65 | add(Pattern.compile("^[0-9.x]+_[a-zA-Z0-9.]+$"));
66 | add(Pattern.compile("^[0-9.x]+\\%[0-9a-zA-Z.]+$"));
67 | add(Pattern.compile("^[0-9.x]+-([0-9.]+[a-zA-Z0-9.\\-_]*|[a-zA-Z0-9.\\-_]*[0-9.]+)$"));
68 | add(Pattern.compile("^[0-9a-z\\-_.]*\\%[0-9a-z\\-_.]+"));
69 | add(Pattern.compile("-[a-zA-Z0-9.]+$"));
70 | add(Pattern.compile("^alpha[_0-9a-zA-Z.]*"));
71 | add(Pattern.compile("^beta[_0-9a-zA-Z.]*"));
72 | add(Pattern.compile("^[A-Z]{1,3}[0-9]$"));
73 | }};
74 |
75 | public static Pattern no_label = Pattern.compile(CyberHeuristicAnnotator.O.toString());
76 | public static Pattern sw_product = Pattern.compile(CyberHeuristicAnnotator.SW_PRODUCT.toString());
77 | public static Pattern sw_vendor = Pattern.compile(CyberHeuristicAnnotator.SW_VENDOR.toString());
78 | public static Pattern sw_version = Pattern.compile(CyberHeuristicAnnotator.SW_VERSION.toString());
79 | public static Pattern sw_file = Pattern.compile(CyberHeuristicAnnotator.FILE_NAME.toString());
80 | public static Pattern sw_function = Pattern.compile(CyberHeuristicAnnotator.FUNCTION_NAME.toString());
81 | public static Pattern vuln_ms = Pattern.compile(CyberHeuristicAnnotator.VULN_MS.toString());
82 | public static Pattern vuln_cve = Pattern.compile(CyberHeuristicAnnotator.VULN_CVE.toString());
83 | public static Pattern vuln_name = Pattern.compile(CyberHeuristicAnnotator.VULN_NAME.toString());
84 | public static Pattern vuln_desc = Pattern.compile(CyberHeuristicAnnotator.VULN_DESC.toString());
85 |
86 | private List regexList;
87 |
88 | public RegexHeuristicLabeler() {
89 | regexList = new ArrayList();
90 | init();
91 | }
92 |
93 |
94 | public void annotate(List tokenSublist) {
95 | for (RegexContext regex : regexList) {
96 | if (regex.evaluate(tokenSublist)) {
97 | break;
98 | }
99 | }
100 | }
101 |
102 |
103 | /**
104 | * Set up all the RegexContext instances and add them to the list.
105 | */
106 | private void init() {
107 | System.err.println("Loading regular expresions ...");
108 | // All these instances are ported from averaged_perceptron/comparison-code/preprocessing-code/regex_ad_hoc_tagger.py
109 | RegexContext regexContext = new RegexContext();
110 | // Line 30-34
111 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
112 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
113 | List keyList = new ArrayList();
114 | keyList.add(WordKey.P_Word);
115 | keyList.add(WordKey.Word);
116 | regexContext.addWordListPattern(keyList, pattern1);
117 | regexContext.addLabelRegex(LabelKey.P2_Label, sw_version);
118 | regexList.add(regexContext);
119 |
120 | regexContext = new RegexContext();
121 | // Line 34-37
122 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
123 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
124 | keyList = new ArrayList();
125 | keyList.add(WordKey.P_Word);
126 | keyList.add(WordKey.Word);
127 | regexContext.addWordListPattern(keyList, pattern1);
128 | regexContext.addLabelRegex(LabelKey.Label, no_label);
129 | regexList.add(regexContext);
130 |
131 | regexContext = new RegexContext();
132 | // Line 39-40
133 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
134 | regexContext.addWordPattern(WordKey.Word, pattern0);
135 | regexContext.addLabelRegex(LabelKey.Label, no_label);
136 | regexContext.addLabelRegex(LabelKey.P_Label, sw_product);
137 | regexList.add(regexContext);
138 |
139 | regexContext = new RegexContext();
140 | // Line 42-46
141 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
142 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
143 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
144 | keyList = new ArrayList();
145 | keyList.add(WordKey.Word);
146 | keyList.add(WordKey.N_Word);
147 | keyList.add(WordKey.N2_Word);
148 | regexContext.addWordListPattern(keyList, pattern2);
149 | regexContext.addLabelRegex(LabelKey.Label, no_label);
150 | regexList.add(regexContext);
151 |
152 | regexContext = new RegexContext();
153 | // Line 53-56
154 | regexContext.addHeuristicLabel(LabelKey.N3_Label, CyberHeuristicAnnotator.SW_VERSION);
155 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
156 | keyList = new ArrayList();
157 | keyList.add(WordKey.N_Word);
158 | keyList.add(WordKey.N2_Word);
159 | keyList.add(WordKey.N3_Word);
160 | regexContext.addWordListPattern(keyList, pattern3);
161 | regexContext.addLabelRegex(LabelKey.Label, sw_version);
162 | regexContext.addLabelRegex(LabelKey.N3_Label, no_label);
163 | regexList.add(regexContext);
164 |
165 | regexContext = new RegexContext();
166 | // Line 48-51
167 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
168 | keyList = new ArrayList();
169 | keyList.add(WordKey.N_Word);
170 | keyList.add(WordKey.N2_Word);
171 | regexContext.addWordListPattern(keyList, pattern3);
172 | regexContext.addLabelRegex(LabelKey.Label, sw_version);
173 | regexContext.addLabelRegex(LabelKey.N2_Label, no_label);
174 | regexList.add(regexContext);
175 |
176 | regexContext = new RegexContext();
177 | // Line 59-60
178 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
179 | keyList = new ArrayList();
180 | keyList.add(WordKey.Word);
181 | keyList.add(WordKey.N_Word);
182 | regexContext.addWordListPattern(keyList, pattern5);
183 | regexContext.addLabelRegex(LabelKey.Label, no_label);
184 | regexList.add(regexContext);
185 |
186 | regexContext = new RegexContext();
187 | // Line 67-69
188 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
189 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
190 | regexContext.addHeuristicLabel(LabelKey.P2_Label, CyberHeuristicAnnotator.SW_VERSION);
191 | keyList = new ArrayList();
192 | keyList.add(WordKey.P2_Word);
193 | keyList.add(WordKey.P_Word);
194 | keyList.add(WordKey.Word);
195 | regexContext.addWordListPattern(keyList, pattern6);
196 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
197 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
198 | keyList = new ArrayList();
199 | keyList.add(WordKey.N_Word);
200 | keyList.add(WordKey.N2_Word);
201 | regexContext.addWordListPattern(keyList, pattern7);
202 | regexList.add(regexContext);
203 |
204 | regexContext = new RegexContext();
205 | // Line 61-66
206 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
207 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
208 | regexContext.addHeuristicLabel(LabelKey.P2_Label, CyberHeuristicAnnotator.SW_VERSION);
209 | keyList = new ArrayList();
210 | keyList.add(WordKey.P2_Word);
211 | keyList.add(WordKey.P_Word);
212 | keyList.add(WordKey.Word);
213 | regexContext.addWordListPattern(keyList, pattern6);
214 | regexList.add(regexContext);
215 |
216 | regexContext = new RegexContext();
217 | // Line 70-73
218 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
219 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
220 | keyList = new ArrayList();
221 | keyList.add(WordKey.P_Word);
222 | keyList.add(WordKey.Word);
223 | regexContext.addWordListPattern(keyList, pattern6);
224 | regexList.add(regexContext);
225 |
226 | regexContext = new RegexContext();
227 | // Line 75-76
228 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
229 | keyList = new ArrayList();
230 | keyList.add(WordKey.Word);
231 | regexContext.addWordListPattern(keyList, pattern11);
232 | regexContext.addLabelRegex(LabelKey.P_Label, sw_product);
233 | regexList.add(regexContext);
234 |
235 | regexContext = new RegexContext();
236 | // Line 105-117
237 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
238 | keyList = new ArrayList();
239 | keyList.add(WordKey.Word);
240 | keyList.add(WordKey.N_Word);
241 | List patternList = new ArrayList();
242 | patternList.add(pattern13);
243 | patternList.add(pattern14);
244 | regexContext.addWordPatternLists(keyList, patternList);
245 | regexContext.addLabelRegex(LabelKey.Label, no_label);
246 | keyList = new ArrayList();
247 | keyList.add(WordKey.N_Word);
248 | keyList.add(WordKey.N2_Word);
249 | regexContext.addWordListPattern(keyList, pattern3);
250 | regexList.add(regexContext);
251 |
252 | regexContext = new RegexContext();
253 | // Line 79-91 --> skipped because they are included in the patternList0
254 | // Line 92-95 & 108 & 112
255 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
256 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
257 | keyList = new ArrayList();
258 | keyList.add(WordKey.Word);
259 | keyList.add(WordKey.N_Word);
260 | regexContext.addWordListPattern(keyList, pattern13);
261 | regexContext.addLabelRegex(LabelKey.Label, no_label);
262 | regexList.add(regexContext);
263 |
264 | regexContext = new RegexContext();
265 | // Line 97-101 & 108 & 112 & 124-126
266 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
267 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
268 | keyList = new ArrayList();
269 | keyList.add(WordKey.Word);
270 | keyList.add(WordKey.N_Word);
271 | regexContext.addWordListPattern(keyList, pattern14);
272 | regexList.add(regexContext);
273 |
274 | regexContext = new RegexContext();
275 | // Line 119-123
276 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
277 | regexContext.addWordPattern(WordKey.Word, pattern16);
278 | regexList.add(regexContext);
279 |
280 | regexContext = new RegexContext();
281 | // Line 127-136
282 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
283 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
284 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
285 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
286 | keyList = new ArrayList();
287 | keyList.add(WordKey.Word);
288 | keyList.add(WordKey.N_Word);
289 | keyList.add(WordKey.N2_Word);
290 | regexContext.addWordListPattern(keyList, pattern17);
291 | regexContext.addLabelRegex(LabelKey.P2_Label, sw_version);
292 | regexList.add(regexContext);
293 |
294 | regexContext = new RegexContext();
295 | // Line 127-133
296 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
297 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
298 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
299 | keyList = new ArrayList();
300 | keyList.add(WordKey.Word);
301 | keyList.add(WordKey.N_Word);
302 | keyList.add(WordKey.N2_Word);
303 | regexContext.addWordListPattern(keyList, pattern17);
304 | regexContext.addLabelRegex(LabelKey.P_Label, sw_version);
305 | regexList.add(regexContext);
306 |
307 | regexContext = new RegexContext();
308 | // Line 138-139
309 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.VULN_CVE);
310 | regexContext.addWordPattern(WordKey.Word, pattern19);
311 | regexList.add(regexContext);
312 |
313 | regexContext = new RegexContext();
314 | // Line 143-144
315 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.VULN_MS);
316 | regexContext.addWordPattern(WordKey.Word, pattern20);
317 | regexList.add(regexContext);
318 |
319 | regexContext = new RegexContext();
320 | // Line 169-193 & 248-258 & 269-279
321 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
322 | keyList = new ArrayList();
323 | keyList.add(WordKey.Word);
324 | keyList.add(WordKey.N_Word);
325 | keyList.add(WordKey.N2_Word);
326 | keyList.add(WordKey.N3_Word);
327 | regexContext.addWordListPattern(keyList, pattern8);
328 | regexContext.addLabelRegex(LabelKey.N3_Label, no_label);
329 | regexList.add(regexContext);
330 |
331 | regexContext = new RegexContext();
332 | // Line 119 - 123
333 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
334 | regexContext.addWordPattern(WordKey.Word, pattern16);
335 | regexContext.addLabelRegex(LabelKey.Label, no_label);
336 | regexList.add(regexContext);
337 |
338 | regexContext = new RegexContext();
339 | // Line 127 & 132-136
340 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_VERSION);
341 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
342 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
343 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
344 | keyList = new ArrayList();
345 | keyList.add(WordKey.Word);
346 | keyList.add(WordKey.N_Word);
347 | keyList.add(WordKey.N2_Word);
348 | regexContext.addWordListPattern(keyList, pattern17);
349 | regexContext.addLabelRegex(LabelKey.P2_Label, sw_version);
350 | regexList.add(regexContext);
351 |
352 | regexContext = new RegexContext();
353 | // Line 127-131
354 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
355 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_VERSION);
356 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
357 | keyList = new ArrayList();
358 | keyList.add(WordKey.Word);
359 | keyList.add(WordKey.N_Word);
360 | keyList.add(WordKey.N2_Word);
361 | regexContext.addWordListPattern(keyList, pattern17);
362 | regexContext.addLabelRegex(LabelKey.P_Label, sw_version);
363 | regexList.add(regexContext);
364 |
365 | regexContext = new RegexContext();
366 | // Line 138-139
367 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.VULN_CVE);
368 | regexContext.addWordPattern(WordKey.Word, pattern19);
369 | regexList.add(regexContext);
370 |
371 | regexContext = new RegexContext();
372 | // Line 143-144
373 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.VULN_MS);
374 | regexContext.addWordPattern(WordKey.Word, pattern20);
375 | regexList.add(regexContext);
376 |
377 | regexContext = new RegexContext();
378 | // Line 169-179 & 183-193 & 248-258 & 269-279
379 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
380 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
381 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_PRODUCT);
382 | regexContext.addHeuristicLabel(LabelKey.N3_Label, CyberHeuristicAnnotator.SW_VERSION);
383 | keyList = new ArrayList();
384 | keyList.add(WordKey.Word);
385 | keyList.add(WordKey.N_Word);
386 | keyList.add(WordKey.N2_Word);
387 | keyList.add(WordKey.N3_Word);
388 | regexContext.addWordListPattern(keyList, pattern8);
389 | regexList.add(regexContext);
390 |
391 | regexContext = new RegexContext();
392 | // Line 197-205 & 209-217 & 222-230 & 235-243
393 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
394 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
395 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_VERSION);
396 | keyList = new ArrayList();
397 | keyList.add(WordKey.Word);
398 | keyList.add(WordKey.N_Word);
399 | keyList.add(WordKey.N2_Word);
400 | regexContext.addWordListPattern(keyList, pattern10);
401 | regexList.add(regexContext);
402 |
403 | regexContext = new RegexContext();
404 | // Line 263-264
405 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
406 | regexContext.addWordPattern(WordKey.Word, pattern12);
407 | regexList.add(regexContext);
408 |
409 | regexContext = new RegexContext();
410 | // Line 284-295
411 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
412 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
413 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_PRODUCT);
414 | regexContext.addHeuristicLabel(LabelKey.N3_Label, CyberHeuristicAnnotator.SW_PRODUCT);
415 | regexContext.addHeuristicLabel(LabelKey.N4_Label, CyberHeuristicAnnotator.SW_VERSION);
416 | keyList = new ArrayList();
417 | keyList.add(WordKey.Word);
418 | keyList.add(WordKey.N_Word);
419 | keyList.add(WordKey.N2_Word);
420 | keyList.add(WordKey.N3_Word);
421 | keyList.add(WordKey.N4_Word);
422 | regexContext.addWordListPattern(keyList, pattern8);
423 | regexList.add(regexContext);
424 |
425 | regexContext = new RegexContext();
426 | // Line 300-311
427 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
428 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
429 | regexContext.addHeuristicLabel(LabelKey.N2_Label, CyberHeuristicAnnotator.SW_PRODUCT);
430 | regexContext.addHeuristicLabel(LabelKey.N3_Label, CyberHeuristicAnnotator.SW_PRODUCT);
431 | regexContext.addHeuristicLabel(LabelKey.N4_Label, CyberHeuristicAnnotator.SW_VERSION);
432 | keyList = new ArrayList();
433 | keyList.add(WordKey.Word);
434 | keyList.add(WordKey.N_Word);
435 | keyList.add(WordKey.N2_Word);
436 | keyList.add(WordKey.N3_Word);
437 | keyList.add(WordKey.N4_Word);
438 | regexContext.addWordListPattern(keyList, pattern9);
439 | regexList.add(regexContext);
440 |
441 | regexContext = new RegexContext();
442 | // Lines 27-28
443 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VERSION);
444 | regexContext.addWordPatternList(WordKey.Word, patternList0);
445 | regexContext.addLabelRegex(LabelKey.Label, no_label);
446 | regexList.add(regexContext);
447 |
448 | regexContext = new RegexContext();
449 | // Line 316-317
450 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
451 | regexContext.addWordPattern(WordKey.Word, pattern15);
452 | regexList.add(regexContext);
453 |
454 | regexContext = new RegexContext();
455 | // Line 333-339
456 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
457 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
458 | keyList = new ArrayList();
459 | keyList.add(WordKey.Word);
460 | keyList.add(WordKey.N_Word);
461 | regexContext.addWordListPattern(keyList, pattern18);
462 | regexList.add(regexContext);
463 |
464 | regexContext = new RegexContext();
465 | // Line 343-353 & 354-361 & 362-368
466 | regexContext.addHeuristicLabel(LabelKey.P2_Label, CyberHeuristicAnnotator.FUNCTION_NAME);
467 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.FUNCTION_NAME);
468 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.FUNCTION_NAME);
469 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.FUNCTION_NAME);
470 | keyList = new ArrayList();
471 | keyList.add(WordKey.P2_Word);
472 | keyList.add(WordKey.P_Word);
473 | keyList.add(WordKey.Word);
474 | keyList.add(WordKey.N_Word);
475 | regexContext.addWordListPattern(keyList, pattern22);
476 | regexList.add(regexContext);
477 |
478 | regexContext = new RegexContext();
479 | // Line 369-370
480 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.FUNCTION_NAME);
481 | regexContext.addWordPattern(WordKey.Word, pattern4);
482 | regexList.add(regexContext);
483 |
484 | regexContext = new RegexContext();
485 | // Line 375-379
486 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.FILE_NAME);
487 | keyList = new ArrayList();
488 | keyList.add(WordKey.P2_Word);
489 | keyList.add(WordKey.P_Word);
490 | keyList.add(WordKey.Word);
491 | regexContext.addWordListPattern(keyList, pattern23);
492 | regexList.add(regexContext);
493 |
494 | regexContext = new RegexContext();
495 | // Line 375-383
496 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.FILE_NAME);
497 | keyList = new ArrayList();
498 | keyList.add(WordKey.Word);
499 | keyList.add(WordKey.N_Word);
500 | regexContext.addWordListPattern(keyList, pattern24);
501 | regexList.add(regexContext);
502 |
503 | regexContext = new RegexContext();
504 | // Line 385-389
505 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.FILE_NAME);
506 | keyList = new ArrayList();
507 | keyList.add(WordKey.Word);
508 | patternList = new ArrayList();
509 | patternList.add(pattern25);
510 | patternList.add(pattern26);
511 | patternList.add(pattern27);
512 | List notOpList = new ArrayList();
513 | notOpList.add(Boolean.FALSE);
514 | notOpList.add(Boolean.TRUE);
515 | notOpList.add(Boolean.TRUE);
516 | regexContext.addPatternLists(keyList, patternList, notOpList);
517 | regexList.add(regexContext);
518 |
519 | regexContext = new RegexContext();
520 | // Line 393-404
521 | regexContext.addHeuristicLabel(LabelKey.P2_Label, CyberHeuristicAnnotator.SW_PRODUCT);
522 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_PRODUCT);
523 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
524 | keyList = new ArrayList();
525 | keyList.add(WordKey.P2_Word);
526 | keyList.add(WordKey.P_Word);
527 | keyList.add(WordKey.Word);
528 | regexContext.addWordListPattern(keyList, pattern28);
529 | regexContext.addLabelRegex(LabelKey.P2_Label, no_label);
530 | regexContext.addLabelRegex(LabelKey.P_Label, no_label);
531 | regexList.add(regexContext);
532 |
533 | regexContext = new RegexContext();
534 | // Line 393-404
535 | regexContext.addHeuristicLabel(LabelKey.P_Label, CyberHeuristicAnnotator.SW_PRODUCT);
536 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
537 | keyList = new ArrayList();
538 | keyList.add(WordKey.P_Word);
539 | keyList.add(WordKey.Word);
540 | regexContext.addWordListPattern(keyList, pattern28);
541 | regexContext.addLabelRegex(LabelKey.P_Label, no_label);
542 | regexList.add(regexContext);
543 |
544 | regexContext = new RegexContext();
545 | // Line 431- 447
546 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_VENDOR);
547 | regexContext.addHeuristicLabel(LabelKey.N_Label, CyberHeuristicAnnotator.SW_PRODUCT);
548 | keyList = new ArrayList();
549 | keyList.add(WordKey.Word);
550 | keyList.add(WordKey.N_Word);
551 | regexContext.addWordListPattern(keyList, pattern29);
552 | regexContext.addLabelRegex(LabelKey.N_Label, no_label);
553 | regexList.add(regexContext);
554 |
555 | regexContext = new RegexContext();
556 | // Line 450-451
557 | regexContext.addHeuristicLabel(LabelKey.Label, CyberHeuristicAnnotator.SW_PRODUCT);
558 | regexContext.addWordPattern(WordKey.Word, pattern30);
559 | regexList.add(regexContext);
560 |
561 | }
562 |
563 |
564 | public static void main(String[] args) {
565 | String exampleText = "Microsoft Windows 7 before SP1 has Oracle Java Runtime Environment cross-site scripting vulnerability in file.php (refer to CVE-2014-1234).";
566 | EntityLabeler labeler = new EntityLabeler();
567 | Annotation doc = labeler.getAnnotatedDoc("My Doc", exampleText);
568 |
569 | List sentences = doc.get(SentencesAnnotation.class);
570 | for ( CoreMap sentence : sentences) {
571 | //
572 | for ( CoreLabel token : sentence.get(TokensAnnotation.class)) {
573 | String word = token.get(TextAnnotation.class);
574 | if (word.equalsIgnoreCase("Windows") || word.equalsIgnoreCase("7")) {
575 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.SW_PRODUCT);
576 | }
577 | else if (word.equalsIgnoreCase("before") || word.equalsIgnoreCase("SP1")) {
578 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.SW_VERSION);
579 | }
580 | else if (word.equalsIgnoreCase("has") || word.equalsIgnoreCase("in")) {
581 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.O);
582 | }
583 | else if (word.equalsIgnoreCase("cross-site") || word.equalsIgnoreCase("scripting") || word.equalsIgnoreCase("vulnerability")) {
584 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.VULN_DESC);
585 | }
586 | else if (word.equalsIgnoreCase("file.php")) {
587 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.FILE_NAME);
588 | }
589 | else if (word.equalsIgnoreCase("CVE-2014-1234")) {
590 | token.set(CyberHeuristicAnnotation.class, CyberHeuristicAnnotator.VULN_CVE);
591 | }
592 | // System.out.println(token.get(TextAnnotation.class) + "\t" + token.get(PartOfSpeechAnnotation.class) + "\t" + token.get(CyberAnnotation.class));
593 | }
594 | }
595 |
596 | }
597 |
598 | }
599 |
--------------------------------------------------------------------------------
/src/main/resources/dictionaries/operating_systems.json:
--------------------------------------------------------------------------------
1 | {
2 | "result":[
3 | {
4 | "/common/topic/alias":[],
5 | "id":"/en/aix_operating_system",
6 | "name":"IBM AIX",
7 | "type":"/computer/operating_system"
8 | },
9 | {
10 | "/common/topic/alias":[],
11 | "id":"/en/amstrad_cpc",
12 | "name":"Amstrad CPC",
13 | "type":"/computer/operating_system"
14 | },
15 | {
16 | "/common/topic/alias":[],
17 | "id":"/en/amigaos",
18 | "name":"AmigaOS",
19 | "type":"/computer/operating_system"
20 | },
21 | {
22 | "/common/topic/alias":[],
23 | "id":"/en/bbc_micro",
24 | "name":"BBC Micro",
25 | "type":"/computer/operating_system"
26 | },
27 | {
28 | "/common/topic/alias":[
29 | "Berkeley Unix",
30 | "BSD"
31 | ],
32 | "id":"/en/berkeley_software_distribution",
33 | "name":"Berkeley Software Distribution",
34 | "type":"/computer/operating_system"
35 | },
36 | {
37 | "/common/topic/alias":[],
38 | "id":"/en/beos",
39 | "name":"BeOS",
40 | "type":"/computer/operating_system"
41 | },
42 | {
43 | "/common/topic/alias":[],
44 | "id":"/en/cygwin",
45 | "name":"Cygwin",
46 | "type":"/computer/operating_system"
47 | },
48 | {
49 | "/common/topic/alias":[
50 | "CBM64",
51 | "CBM 64",
52 | "C64"
53 | ],
54 | "id":"/en/commodore_64",
55 | "name":"Commodore 64",
56 | "type":"/computer/operating_system"
57 | },
58 | {
59 | "/common/topic/alias":[
60 | "Disk Operating System"
61 | ],
62 | "id":"/en/dos",
63 | "name":"DOS",
64 | "type":"/computer/operating_system"
65 | },
66 | {
67 | "/common/topic/alias":[
68 | "Debian"
69 | ],
70 | "id":"/en/debian_gnu_linux",
71 | "name":"Debian GNU/Linux",
72 | "type":"/computer/operating_system"
73 | },
74 | {
75 | "/common/topic/alias":[],
76 | "id":"/en/freebsd",
77 | "name":"FreeBSD",
78 | "type":"/computer/operating_system"
79 | },
80 | {
81 | "/common/topic/alias":[
82 | "GNU's Not Unix"
83 | ],
84 | "id":"/en/gnu",
85 | "name":"GNU",
86 | "type":"/computer/operating_system"
87 | },
88 | {
89 | "/common/topic/alias":[],
90 | "id":"/en/gnu_hurd",
91 | "name":"GNU Hurd",
92 | "type":"/computer/operating_system"
93 | },
94 | {
95 | "/common/topic/alias":[],
96 | "id":"/en/irix",
97 | "name":"IRIX",
98 | "type":"/computer/operating_system"
99 | },
100 | {
101 | "/common/topic/alias":[],
102 | "id":"/en/linspire",
103 | "name":"Linspire",
104 | "type":"/computer/operating_system"
105 | },
106 | {
107 | "/common/topic/alias":[],
108 | "id":"/en/multics",
109 | "name":"Multics",
110 | "type":"/computer/operating_system"
111 | },
112 | {
113 | "/common/topic/alias":[],
114 | "id":"/en/microsoft_windows",
115 | "name":"Microsoft Windows",
116 | "type":"/computer/operating_system"
117 | },
118 | {
119 | "/common/topic/alias":[],
120 | "id":"/en/minix",
121 | "name":"MINIX",
122 | "type":"/computer/operating_system"
123 | },
124 | {
125 | "/common/topic/alias":[
126 | "Mandrake",
127 | "Mandriva"
128 | ],
129 | "id":"/en/mandriva_linux",
130 | "name":"Mandriva Linux",
131 | "type":"/computer/operating_system"
132 | },
133 | {
134 | "/common/topic/alias":[
135 | "MicroSoft Disk Operating System",
136 | "MS DOS",
137 | "Microsoft DOS",
138 | "DOS",
139 | "MSDOS"
140 | ],
141 | "id":"/en/ms-dos",
142 | "name":"MS-DOS",
143 | "type":"/computer/operating_system"
144 | },
145 | {
146 | "/common/topic/alias":[
147 | "Mac"
148 | ],
149 | "id":"/en/mac_os",
150 | "name":"Mac OS",
151 | "type":"/computer/operating_system"
152 | },
153 | {
154 | "/common/topic/alias":[
155 | "OSX",
156 | "Operating System X"
157 | ],
158 | "id":"/en/mac_os_x",
159 | "name":"OS X",
160 | "type":"/computer/operating_system"
161 | },
162 | {
163 | "/common/topic/alias":[],
164 | "id":"/en/netbsd",
165 | "name":"NetBSD",
166 | "type":"/computer/operating_system"
167 | },
168 | {
169 | "/common/topic/alias":[],
170 | "id":"/en/openbsd",
171 | "name":"OpenBSD",
172 | "type":"/computer/operating_system"
173 | },
174 | {
175 | "/common/topic/alias":[],
176 | "id":"/en/os_2",
177 | "name":"OS/2",
178 | "type":"/computer/operating_system"
179 | },
180 | {
181 | "/common/topic/alias":[],
182 | "id":"/en/os_360",
183 | "name":"OS/360",
184 | "type":"/computer/operating_system"
185 | },
186 | {
187 | "/common/topic/alias":[
188 | "IEEE Std. 1003.1"
189 | ],
190 | "id":"/en/posix",
191 | "name":"POSIX",
192 | "type":"/computer/operating_system"
193 | },
194 | {
195 | "/common/topic/alias":[
196 | "Sony Playstation",
197 | "Playstation 1"
198 | ],
199 | "id":"/en/playstation",
200 | "name":"PlayStation",
201 | "type":"/computer/operating_system"
202 | },
203 | {
204 | "/common/topic/alias":[],
205 | "id":"/en/plan_9_from_bell_labs",
206 | "name":"Plan 9",
207 | "type":"/computer/operating_system"
208 | },
209 | {
210 | "/common/topic/alias":[
211 | "PS3"
212 | ],
213 | "id":"/en/playstation_3",
214 | "name":"PlayStation 3",
215 | "type":"/computer/operating_system"
216 | },
217 | {
218 | "/common/topic/alias":[
219 | "Red Hat",
220 | "RedHat Linux"
221 | ],
222 | "id":"/en/red_hat_linux",
223 | "name":"Red Hat Linux",
224 | "type":"/computer/operating_system"
225 | },
226 | {
227 | "/common/topic/alias":[],
228 | "id":"/en/real-time_operating_system",
229 | "name":"Real-time operating system",
230 | "type":"/computer/operating_system"
231 | },
232 | {
233 | "/common/topic/alias":[],
234 | "id":"/en/suse_linux",
235 | "name":"SUSE Linux",
236 | "type":"/computer/operating_system"
237 | },
238 | {
239 | "/common/topic/alias":[],
240 | "id":"/en/slackware",
241 | "name":"Slackware",
242 | "type":"/computer/operating_system"
243 | },
244 | {
245 | "/common/topic/alias":[],
246 | "id":"/en/sunos",
247 | "name":"SunOS",
248 | "type":"/computer/operating_system"
249 | },
250 | {
251 | "/common/topic/alias":[],
252 | "id":"/en/transaction_processing_facility",
253 | "name":"Transaction Processing Facility",
254 | "type":"/computer/operating_system"
255 | },
256 | {
257 | "/common/topic/alias":[
258 | "UNIX\u00ae",
259 | "UNIX"
260 | ],
261 | "id":"/en/unix",
262 | "name":"Unix",
263 | "type":"/computer/operating_system"
264 | },
265 | {
266 | "/common/topic/alias":[],
267 | "id":"/en/unix-like",
268 | "name":"Unix-like",
269 | "type":"/computer/operating_system"
270 | },
271 | {
272 | "/common/topic/alias":[
273 | "VAX-11/VMS",
274 | "VAX/VMS",
275 | "VMS"
276 | ],
277 | "id":"/en/openvms",
278 | "name":"OpenVMS",
279 | "type":"/computer/operating_system"
280 | },
281 | {
282 | "/common/topic/alias":[],
283 | "id":"/en/windows_nt",
284 | "name":"Windows NT",
285 | "type":"/computer/operating_system"
286 | },
287 | {
288 | "/common/topic/alias":[
289 | "Whistler",
290 | "Windows eXPerience",
291 | "Microsoft Windows XP",
292 | "XP"
293 | ],
294 | "id":"/en/windows_xp",
295 | "name":"Windows XP",
296 | "type":"/computer/operating_system"
297 | },
298 | {
299 | "/common/topic/alias":[
300 | "Windows NT 5"
301 | ],
302 | "id":"/en/windows_2000",
303 | "name":"Windows 2000",
304 | "type":"/computer/operating_system"
305 | },
306 | {
307 | "/common/topic/alias":[],
308 | "id":"/en/windows_95",
309 | "name":"Windows 95",
310 | "type":"/computer/operating_system"
311 | },
312 | {
313 | "/common/topic/alias":[],
314 | "id":"/en/hp-ux",
315 | "name":"HP-UX",
316 | "type":"/computer/operating_system"
317 | },
318 | {
319 | "/common/topic/alias":[],
320 | "id":"/en/palm_os",
321 | "name":"Palm OS",
322 | "type":"/computer/operating_system"
323 | },
324 | {
325 | "/common/topic/alias":[
326 | "OSF/1",
327 | "Digital Unix"
328 | ],
329 | "id":"/en/tru64_unix",
330 | "name":"Tru64 UNIX",
331 | "type":"/computer/operating_system"
332 | },
333 | {
334 | "/common/topic/alias":[],
335 | "id":"/en/os-9",
336 | "name":"OS-9",
337 | "type":"/computer/operating_system"
338 | },
339 | {
340 | "/common/topic/alias":[],
341 | "id":"/en/z_os",
342 | "name":"z/OS",
343 | "type":"/computer/operating_system"
344 | },
345 | {
346 | "/common/topic/alias":[],
347 | "id":"/en/nextstep",
348 | "name":"NeXTSTEP",
349 | "type":"/computer/operating_system"
350 | },
351 | {
352 | "/common/topic/alias":[
353 | "Java ME"
354 | ],
355 | "id":"/en/java_platform_micro_edition",
356 | "name":"Java Platform, Micro Edition",
357 | "type":"/computer/operating_system"
358 | },
359 | {
360 | "/common/topic/alias":[
361 | "CP/M operating system"
362 | ],
363 | "id":"/en/cp_m",
364 | "name":"CP/M",
365 | "type":"/computer/operating_system"
366 | },
367 | {
368 | "/common/topic/alias":[
369 | "Solaris",
370 | "Solaris Operating Environment"
371 | ],
372 | "id":"/en/solaris_operating_system",
373 | "name":"Solaris Operating System",
374 | "type":"/computer/operating_system"
375 | },
376 | {
377 | "/common/topic/alias":[],
378 | "id":"/en/mac_os_x_server",
379 | "name":"OS X Server",
380 | "type":"/computer/operating_system"
381 | },
382 | {
383 | "/common/topic/alias":[],
384 | "id":"/en/unicos",
385 | "name":"UNICOS",
386 | "type":"/computer/operating_system"
387 | },
388 | {
389 | "/common/topic/alias":[],
390 | "id":"/en/dnix",
391 | "name":"DNIX",
392 | "type":"/computer/operating_system"
393 | },
394 | {
395 | "/common/topic/alias":[],
396 | "id":"/wikipedia/ru_id/254445",
397 | "name":"Darwin",
398 | "type":"/computer/operating_system"
399 | },
400 | {
401 | "/common/topic/alias":[],
402 | "id":"/en/tinfoil_hat_linux",
403 | "name":"Tinfoil Hat Linux",
404 | "type":"/computer/operating_system"
405 | },
406 | {
407 | "/common/topic/alias":[],
408 | "id":"/en/rsx-11",
409 | "name":"RSX-11",
410 | "type":"/computer/operating_system"
411 | },
412 | {
413 | "/common/topic/alias":[],
414 | "id":"/en/gnu_mach",
415 | "name":"GNU Mach",
416 | "type":"/computer/operating_system"
417 | },
418 | {
419 | "/common/topic/alias":[],
420 | "id":"/en/qnx",
421 | "name":"QNX",
422 | "type":"/computer/operating_system"
423 | },
424 | {
425 | "/common/topic/alias":[],
426 | "id":"/en/tops-20",
427 | "name":"TOPS-20",
428 | "type":"/computer/operating_system"
429 | },
430 | {
431 | "/common/topic/alias":[],
432 | "id":"/en/windows_1_0",
433 | "name":"Windows 1.0",
434 | "type":"/computer/operating_system"
435 | },
436 | {
437 | "/common/topic/alias":[],
438 | "id":"/en/rt-11",
439 | "name":"RT-11",
440 | "type":"/computer/operating_system"
441 | },
442 | {
443 | "/common/topic/alias":[],
444 | "id":"/en/windows_98",
445 | "name":"Windows 98",
446 | "type":"/computer/operating_system"
447 | },
448 | {
449 | "/common/topic/alias":[
450 | "Windows Millennium Edition"
451 | ],
452 | "id":"/en/windows_me",
453 | "name":"Windows ME",
454 | "type":"/computer/operating_system"
455 | },
456 | {
457 | "/common/topic/alias":[],
458 | "id":"/en/xenix",
459 | "name":"Xenix",
460 | "type":"/computer/operating_system"
461 | },
462 | {
463 | "/common/topic/alias":[],
464 | "id":"/en/psos",
465 | "name":"pSOS",
466 | "type":"/computer/operating_system"
467 | },
468 | {
469 | "/common/topic/alias":[],
470 | "id":"/en/newos",
471 | "name":"NewOS",
472 | "type":"/computer/operating_system"
473 | },
474 | {
475 | "/common/topic/alias":[],
476 | "id":"/wikipedia/ru_id/195675",
477 | "name":"Syllable Desktop",
478 | "type":"/computer/operating_system"
479 | },
480 | {
481 | "/common/topic/alias":[
482 | "Gentoo"
483 | ],
484 | "id":"/en/gentoo_linux",
485 | "name":"Gentoo Linux",
486 | "type":"/computer/operating_system"
487 | },
488 | {
489 | "/common/topic/alias":[],
490 | "id":"/en/l4_microkernel_family",
491 | "name":"L4 microkernel family",
492 | "type":"/computer/operating_system"
493 | },
494 | {
495 | "/common/topic/alias":[],
496 | "id":"/en/freedos",
497 | "name":"FreeDOS",
498 | "type":"/computer/operating_system"
499 | },
500 | {
501 | "/common/topic/alias":[],
502 | "id":"/en/pc-dos",
503 | "name":"IBM PC DOS",
504 | "type":"/computer/operating_system"
505 | },
506 | {
507 | "/common/topic/alias":[],
508 | "id":"/en/vxworks",
509 | "name":"VxWorks",
510 | "type":"/computer/operating_system"
511 | },
512 | {
513 | "/common/topic/alias":[],
514 | "id":"/en/knoppix",
515 | "name":"Knoppix",
516 | "type":"/computer/operating_system"
517 | },
518 | {
519 | "/common/topic/alias":[],
520 | "id":"/en/menuetos",
521 | "name":"MenuetOS",
522 | "type":"/computer/operating_system"
523 | },
524 | {
525 | "/common/topic/alias":[],
526 | "id":"/en/windows_3_1x",
527 | "name":"Windows 3.1x",
528 | "type":"/computer/operating_system"
529 | },
530 | {
531 | "/common/topic/alias":[],
532 | "id":"/en/risc_os",
533 | "name":"RISC OS",
534 | "type":"/computer/operating_system"
535 | },
536 | {
537 | "/common/topic/alias":[],
538 | "id":"/en/windows_3_0",
539 | "name":"Windows 3.0",
540 | "type":"/computer/operating_system"
541 | },
542 | {
543 | "/common/topic/alias":[],
544 | "id":"/en/atheos",
545 | "name":"AtheOS",
546 | "type":"/computer/operating_system"
547 | },
548 | {
549 | "/common/topic/alias":[],
550 | "id":"/en/cp_m_86",
551 | "name":"CP/M-86",
552 | "type":"/computer/operating_system"
553 | },
554 | {
555 | "/common/topic/alias":[],
556 | "id":"/en/va_kernel",
557 | "name":"VA Kernel",
558 | "type":"/computer/operating_system"
559 | },
560 | {
561 | "/common/topic/alias":[],
562 | "id":"/en/cisco_ios",
563 | "name":"Cisco IOS",
564 | "type":"/computer/operating_system"
565 | },
566 | {
567 | "/common/topic/alias":[],
568 | "id":"/en/windows_2_0",
569 | "name":"Windows 2.0",
570 | "type":"/computer/operating_system"
571 | },
572 | {
573 | "/common/topic/alias":[],
574 | "id":"/en/gnulinex",
575 | "name":"gnuLinEx",
576 | "type":"/computer/operating_system"
577 | },
578 | {
579 | "/common/topic/alias":[
580 | "QDOS"
581 | ],
582 | "id":"/en/qdos",
583 | "name":"86-DOS",
584 | "type":"/computer/operating_system"
585 | },
586 | {
587 | "/common/topic/alias":[],
588 | "id":"/en/ultrix",
589 | "name":"Ultrix",
590 | "type":"/computer/operating_system"
591 | },
592 | {
593 | "/common/topic/alias":[],
594 | "id":"/en/mac_os_9",
595 | "name":"Mac OS 9",
596 | "type":"/computer/operating_system"
597 | },
598 | {
599 | "/common/topic/alias":[
600 | "Windows .NET Server",
601 | "Windows 2002 Server",
602 | "Whistler Server",
603 | "Windows 2003 Server"
604 | ],
605 | "id":"/en/windows_server_2003",
606 | "name":"Windows Server 2003",
607 | "type":"/computer/operating_system"
608 | },
609 | {
610 | "/common/topic/alias":[],
611 | "id":"/en/gp32",
612 | "name":"GP32",
613 | "type":"/computer/operating_system"
614 | },
615 | {
616 | "/common/topic/alias":[],
617 | "id":"/en/amiga_unix",
618 | "name":"Amiga Unix",
619 | "type":"/computer/operating_system"
620 | },
621 | {
622 | "/common/topic/alias":[],
623 | "id":"/en/windows_ce",
624 | "name":"Windows CE",
625 | "type":"/computer/operating_system"
626 | },
627 | {
628 | "/common/topic/alias":[],
629 | "id":"/en/a_ux",
630 | "name":"A/UX",
631 | "type":"/computer/operating_system"
632 | },
633 | {
634 | "/common/topic/alias":[],
635 | "id":"/en/yellow_dog_linux",
636 | "name":"Yellow Dog Linux",
637 | "type":"/computer/operating_system"
638 | },
639 | {
640 | "/common/topic/alias":[
641 | "i5/OS"
642 | ],
643 | "id":"/en/os_400",
644 | "name":"IBM i",
645 | "type":"/computer/operating_system"
646 | },
647 | {
648 | "/common/topic/alias":[],
649 | "id":"/en/apple_dos",
650 | "name":"Apple DOS",
651 | "type":"/computer/operating_system"
652 | },
653 | {
654 | "/common/topic/alias":[],
655 | "id":"/en/os_8",
656 | "name":"OS/8",
657 | "type":"/computer/operating_system"
658 | },
659 | {
660 | "/common/topic/alias":[],
661 | "id":"/en/ctss",
662 | "name":"Compatible Time-Sharing System",
663 | "type":"/computer/operating_system"
664 | },
665 | {
666 | "/common/topic/alias":[],
667 | "id":"/en/coherent",
668 | "name":"Coherent",
669 | "type":"/computer/operating_system"
670 | },
671 | {
672 | "/common/topic/alias":[],
673 | "id":"/wikipedia/de_id/139507",
674 | "name":"Apple SOS",
675 | "type":"/computer/operating_system"
676 | },
677 | {
678 | "/common/topic/alias":[],
679 | "id":"/en/morphos",
680 | "name":"MorphOS",
681 | "type":"/computer/operating_system"
682 | },
683 | {
684 | "/common/topic/alias":[],
685 | "id":"/en/s60_platform",
686 | "name":"S60",
687 | "type":"/computer/operating_system"
688 | },
689 | {
690 | "/common/topic/alias":[],
691 | "id":"/en/trustix",
692 | "name":"Trustix",
693 | "type":"/computer/operating_system"
694 | },
695 | {
696 | "/common/topic/alias":[],
697 | "id":"/en/mac_os_x_v10_3",
698 | "name":"Mac OS X Panther",
699 | "type":"/computer/operating_system"
700 | },
701 | {
702 | "/common/topic/alias":[
703 | "DragonFly"
704 | ],
705 | "id":"/en/dragonfly_bsd",
706 | "name":"DragonFly BSD",
707 | "type":"/computer/operating_system"
708 | },
709 | {
710 | "/common/topic/alias":[],
711 | "id":"/en/integer_basic",
712 | "name":"Integer BASIC",
713 | "type":"/computer/operating_system"
714 | },
715 | {
716 | "/common/topic/alias":[],
717 | "id":"/en/rsts_e",
718 | "name":"RSTS/E",
719 | "type":"/computer/operating_system"
720 | },
721 | {
722 | "/common/topic/alias":[
723 | "VM/CMS"
724 | ],
725 | "id":"/en/vm",
726 | "name":"VM",
727 | "type":"/computer/operating_system"
728 | },
729 | {
730 | "/common/topic/alias":[],
731 | "id":"/en/commodore_basic",
732 | "name":"Commodore BASIC",
733 | "type":"/computer/operating_system"
734 | },
735 | {
736 | "/common/topic/alias":[],
737 | "id":"/en/msx_basic",
738 | "name":"MSX BASIC",
739 | "type":"/computer/operating_system"
740 | },
741 | {
742 | "/common/topic/alias":[
743 | "System 7",
744 | "Big Bang"
745 | ],
746 | "id":"/en/mac_os_7",
747 | "name":"Mac OS 7",
748 | "type":"/computer/operating_system"
749 | },
750 | {
751 | "/common/topic/alias":[],
752 | "id":"/en/oberon_operating_system",
753 | "name":"Oberon",
754 | "type":"/computer/operating_system"
755 | },
756 | {
757 | "/common/topic/alias":[],
758 | "id":"/en/extremely_reliable_operating_system",
759 | "name":"EROS",
760 | "type":"/computer/operating_system"
761 | },
762 | {
763 | "/common/topic/alias":[],
764 | "id":"/en/reactos",
765 | "name":"ReactOS",
766 | "type":"/computer/operating_system"
767 | },
768 | {
769 | "/common/topic/alias":[],
770 | "id":"/en/novell_netware",
771 | "name":"NetWare",
772 | "type":"/computer/operating_system"
773 | },
774 | {
775 | "/common/topic/alias":[],
776 | "id":"/en/mint",
777 | "name":"MiNT",
778 | "type":"/computer/operating_system"
779 | },
780 | {
781 | "/common/topic/alias":[],
782 | "id":"/en/emutos",
783 | "name":"EmuTOS",
784 | "type":"/computer/operating_system"
785 | },
786 | {
787 | "/common/topic/alias":[],
788 | "id":"/en/banyan_vines",
789 | "name":"Banyan VINES",
790 | "type":"/computer/operating_system"
791 | },
792 | {
793 | "/common/topic/alias":[],
794 | "id":"/en/damn_small_linux",
795 | "name":"Damn Small Linux",
796 | "type":"/computer/operating_system"
797 | },
798 | {
799 | "/common/topic/alias":[],
800 | "id":"/en/sinclair_basic",
801 | "name":"Sinclair BASIC",
802 | "type":"/computer/operating_system"
803 | },
804 | {
805 | "/common/topic/alias":[],
806 | "id":"/en/mac_os_x_v10_2",
807 | "name":"Mac OS X v10.2",
808 | "type":"/computer/operating_system"
809 | },
810 | {
811 | "/common/topic/alias":[],
812 | "id":"/en/slax",
813 | "name":"Slax",
814 | "type":"/computer/operating_system"
815 | },
816 | {
817 | "/common/topic/alias":[],
818 | "id":"/en/systemrescuecd",
819 | "name":"SystemRescueCD",
820 | "type":"/computer/operating_system"
821 | },
822 | {
823 | "/common/topic/alias":[],
824 | "id":"/en/mepis",
825 | "name":"MEPIS",
826 | "type":"/computer/operating_system"
827 | },
828 | {
829 | "/common/topic/alias":[],
830 | "id":"/en/ecos",
831 | "name":"eCos",
832 | "type":"/computer/operating_system"
833 | },
834 | {
835 | "/common/topic/alias":[],
836 | "id":"/en/ms_8",
837 | "name":"MS/8",
838 | "type":"/computer/operating_system"
839 | },
840 | {
841 | "/common/topic/alias":[
842 | "System 6"
843 | ],
844 | "id":"/en/system_software_6",
845 | "name":"System Software 6",
846 | "type":"/computer/operating_system"
847 | },
848 | {
849 | "/common/topic/alias":[],
850 | "id":"/en/sprite_operating_system",
851 | "name":"Sprite",
852 | "type":"/computer/operating_system"
853 | },
854 | {
855 | "/common/topic/alias":[],
856 | "id":"/en/userlinux",
857 | "name":"UserLinux",
858 | "type":"/computer/operating_system"
859 | },
860 | {
861 | "/common/topic/alias":[],
862 | "id":"/en/red_flag_linux",
863 | "name":"Red Flag Linux",
864 | "type":"/computer/operating_system"
865 | },
866 | {
867 | "/common/topic/alias":[],
868 | "id":"/en/yoper",
869 | "name":"YOPER",
870 | "type":"/computer/operating_system"
871 | },
872 | {
873 | "/common/topic/alias":[],
874 | "id":"/en/psion_5",
875 | "name":"Psion Series 5",
876 | "type":"/computer/operating_system"
877 | },
878 | {
879 | "/common/topic/alias":[],
880 | "id":"/wikipedia/ja_id/1518519",
881 | "name":"V",
882 | "type":"/computer/operating_system"
883 | },
884 | {
885 | "/common/topic/alias":[],
886 | "id":"/en/mac_os_x_v10_1",
887 | "name":"Mac OS X v10.1",
888 | "type":"/computer/operating_system"
889 | },
890 | {
891 | "/common/topic/alias":[],
892 | "id":"/en/mac_os_x_v10_0",
893 | "name":"Mac OS X v10.0",
894 | "type":"/computer/operating_system"
895 | },
896 | {
897 | "/common/topic/alias":[],
898 | "id":"/wikipedia/ja/Inferno_$0028$30AA$30DA$30EC$30FC$30C6$30A3$30F3$30B0$30B7$30B9$30C6$30E0$0029",
899 | "name":"Inferno",
900 | "type":"/computer/operating_system"
901 | },
902 | {
903 | "/common/topic/alias":[],
904 | "id":"/en/mac_os_8",
905 | "name":"Mac OS 8",
906 | "type":"/computer/operating_system"
907 | },
908 | {
909 | "/common/topic/alias":[],
910 | "id":"/en/tron_project",
911 | "name":"TRON project",
912 | "type":"/computer/operating_system"
913 | },
914 | {
915 | "/common/topic/alias":[],
916 | "id":"/en/trs-dos",
917 | "name":"TRS-DOS",
918 | "type":"/computer/operating_system"
919 | },
920 | {
921 | "/common/topic/alias":[],
922 | "id":"/wikipedia/en_title/Quark_$0028kernel$0029",
923 | "name":"Quark",
924 | "type":"/computer/operating_system"
925 | },
926 | {
927 | "/common/topic/alias":[],
928 | "id":"/en/qtopia",
929 | "name":"Qt Extended",
930 | "type":"/computer/operating_system"
931 | },
932 | {
933 | "/common/topic/alias":[],
934 | "id":"/en/tops-10",
935 | "name":"TOPS-10",
936 | "type":"/computer/operating_system"
937 | },
938 | {
939 | "/common/topic/alias":[],
940 | "id":"/en/hydrixos",
941 | "name":"HydrixOS",
942 | "type":"/computer/operating_system"
943 | },
944 | {
945 | "/common/topic/alias":[
946 | "OpenBeOS"
947 | ],
948 | "id":"/wikipedia/it_id/108731",
949 | "name":"Haiku",
950 | "type":"/computer/operating_system"
951 | },
952 | {
953 | "/common/topic/alias":[
954 | "RHEL"
955 | ],
956 | "id":"/en/red_hat_enterprise_linux",
957 | "name":"Red Hat Enterprise Linux",
958 | "type":"/computer/operating_system"
959 | },
960 | {
961 | "/common/topic/alias":[],
962 | "id":"/en/ark_linux",
963 | "name":"Ark Linux",
964 | "type":"/computer/operating_system"
965 | },
966 | {
967 | "/common/topic/alias":[],
968 | "id":"/en/unixware",
969 | "name":"UnixWare",
970 | "type":"/computer/operating_system"
971 | },
972 | {
973 | "/common/topic/alias":[],
974 | "id":"/en/berry_linux",
975 | "name":"Berry Linux",
976 | "type":"/computer/operating_system"
977 | },
978 | {
979 | "/common/topic/alias":[],
980 | "id":"/en/sinclair_qdos",
981 | "name":"Sinclair QDOS",
982 | "type":"/computer/operating_system"
983 | },
984 | {
985 | "/common/topic/alias":[],
986 | "id":"/en/unix_system_v",
987 | "name":"UNIX System V",
988 | "type":"/computer/operating_system"
989 | },
990 | {
991 | "/common/topic/alias":[],
992 | "id":"/en/pts-dos",
993 | "name":"PTS-DOS",
994 | "type":"/computer/operating_system"
995 | },
996 | {
997 | "/common/topic/alias":[],
998 | "id":"/en/windows_xp_professional_x64_edition",
999 | "name":"Windows XP Professional x64 Edition",
1000 | "type":"/computer/operating_system"
1001 | },
1002 | {
1003 | "/common/topic/alias":[],
1004 | "id":"/en/dos_360",
1005 | "name":"DOS/360 and successors",
1006 | "type":"/computer/operating_system"
1007 | },
1008 | {
1009 | "/common/topic/alias":[
1010 | "OSX"
1011 | ],
1012 | "id":"/en/mac_os_x_v10_4",
1013 | "name":"Mac OS X Tiger",
1014 | "type":"/computer/operating_system"
1015 | },
1016 | {
1017 | "/common/topic/alias":[],
1018 | "id":"/en/white_box_enterprise_linux",
1019 | "name":"White Box Enterprise Linux",
1020 | "type":"/computer/operating_system"
1021 | },
1022 | {
1023 | "/common/topic/alias":[],
1024 | "id":"/en/arch_linux",
1025 | "name":"Arch Linux",
1026 | "type":"/computer/operating_system"
1027 | },
1028 | {
1029 | "/common/topic/alias":[],
1030 | "id":"/en/pclinuxos",
1031 | "name":"PCLinuxOS",
1032 | "type":"/computer/operating_system"
1033 | },
1034 | {
1035 | "/common/topic/alias":[],
1036 | "id":"/en/gnu_netbsd",
1037 | "name":"GNU/NetBSD",
1038 | "type":"/computer/operating_system"
1039 | },
1040 | {
1041 | "/common/topic/alias":[],
1042 | "id":"/en/windows_xp_media_center_edition",
1043 | "name":"Windows XP Media Center Edition",
1044 | "type":"/computer/operating_system"
1045 | },
1046 | {
1047 | "/common/topic/alias":[],
1048 | "id":"/en/windows_nt_4_0",
1049 | "name":"Windows NT 4.0",
1050 | "type":"/computer/operating_system"
1051 | },
1052 | {
1053 | "/common/topic/alias":[],
1054 | "id":"/wikipedia/fr/Crux_Linux",
1055 | "name":"CRUX",
1056 | "type":"/computer/operating_system"
1057 | },
1058 | {
1059 | "/common/topic/alias":[],
1060 | "id":"/en/co-createlinux",
1061 | "name":"Co-CreateLinux",
1062 | "type":"/computer/operating_system"
1063 | },
1064 | {
1065 | "/common/topic/alias":[],
1066 | "id":"/en/freedows_os",
1067 | "name":"Freedows OS",
1068 | "type":"/computer/operating_system"
1069 | },
1070 | {
1071 | "/common/topic/alias":[],
1072 | "id":"/en/contiki",
1073 | "name":"Contiki",
1074 | "type":"/computer/operating_system"
1075 | },
1076 | {
1077 | "/common/topic/alias":[],
1078 | "id":"/en/cray_operating_system",
1079 | "name":"Cray Operating System",
1080 | "type":"/computer/operating_system"
1081 | },
1082 | {
1083 | "/common/topic/alias":[],
1084 | "id":"/en/kurumin_linux",
1085 | "name":"Kurumin",
1086 | "type":"/computer/operating_system"
1087 | },
1088 | {
1089 | "/common/topic/alias":[],
1090 | "id":"/en/smsq_e",
1091 | "name":"SMSQ/E",
1092 | "type":"/computer/operating_system"
1093 | },
1094 | {
1095 | "/common/topic/alias":[],
1096 | "id":"/en/atari_tos",
1097 | "name":"Atari TOS",
1098 | "type":"/computer/operating_system"
1099 | },
1100 | {
1101 | "/common/topic/alias":[],
1102 | "id":"/en/softlanding_linux_system",
1103 | "name":"Softlanding Linux System",
1104 | "type":"/computer/operating_system"
1105 | },
1106 | {
1107 | "/common/topic/alias":[],
1108 | "id":"/en/nokia_9210",
1109 | "name":"Nokia 9210 Communicator",
1110 | "type":"/computer/operating_system"
1111 | },
1112 | {
1113 | "/common/topic/alias":[],
1114 | "id":"/en/alt_linux",
1115 | "name":"ALT Linux",
1116 | "type":"/computer/operating_system"
1117 | },
1118 | {
1119 | "/common/topic/alias":[],
1120 | "id":"/wikipedia/de_id/1252324",
1121 | "name":"Idris",
1122 | "type":"/computer/operating_system"
1123 | },
1124 | {
1125 | "/common/topic/alias":[],
1126 | "id":"/en/windows_nt_3_1",
1127 | "name":"Windows NT 3.1",
1128 | "type":"/computer/operating_system"
1129 | },
1130 | {
1131 | "/common/topic/alias":[
1132 | "Ubuntu Linux"
1133 | ],
1134 | "id":"/en/ubuntu",
1135 | "name":"Ubuntu",
1136 | "type":"/computer/operating_system"
1137 | },
1138 | {
1139 | "/common/topic/alias":[],
1140 | "id":"/en/centos",
1141 | "name":"CentOS",
1142 | "type":"/computer/operating_system"
1143 | },
1144 | {
1145 | "/common/topic/alias":[],
1146 | "id":"/en/hikarunix",
1147 | "name":"Hikarunix",
1148 | "type":"/computer/operating_system"
1149 | },
1150 | {
1151 | "/common/topic/alias":[],
1152 | "id":"/en/puppy_linux",
1153 | "name":"Puppy Linux",
1154 | "type":"/computer/operating_system"
1155 | },
1156 | {
1157 | "/common/topic/alias":[],
1158 | "id":"/en/newton_os",
1159 | "name":"Newton OS",
1160 | "type":"/computer/operating_system"
1161 | },
1162 | {
1163 | "/common/topic/alias":[],
1164 | "id":"/en/veritos",
1165 | "name":"VeritOS",
1166 | "type":"/computer/operating_system"
1167 | },
1168 | {
1169 | "/common/topic/alias":[],
1170 | "id":"/en/commodore_dos",
1171 | "name":"Commodore DOS",
1172 | "type":"/computer/operating_system"
1173 | },
1174 | {
1175 | "/common/topic/alias":[
1176 | "BSDi",
1177 | "BSD/386"
1178 | ],
1179 | "id":"/en/bsd_os",
1180 | "name":"BSD/OS",
1181 | "type":"/computer/operating_system"
1182 | },
1183 | {
1184 | "/common/topic/alias":[],
1185 | "id":"/wikipedia/ja_id/222678",
1186 | "name":"MonaOS",
1187 | "type":"/computer/operating_system"
1188 | },
1189 | {
1190 | "/common/topic/alias":[],
1191 | "id":"/wikipedia/en_title/FLEX_$0028operating_system$0029",
1192 | "name":"FLEX",
1193 | "type":"/computer/operating_system"
1194 | },
1195 | {
1196 | "/common/topic/alias":[],
1197 | "id":"/en/corel_linux",
1198 | "name":"Corel Linux",
1199 | "type":"/computer/operating_system"
1200 | },
1201 | {
1202 | "/common/topic/alias":[],
1203 | "id":"/en/k42",
1204 | "name":"K42",
1205 | "type":"/computer/operating_system"
1206 | },
1207 | {
1208 | "/common/topic/alias":[],
1209 | "id":"/en/e_os",
1210 | "name":"E/OS",
1211 | "type":"/computer/operating_system"
1212 | },
1213 | {
1214 | "/common/topic/alias":[],
1215 | "id":"/en/windows_nt_4_0_embedded",
1216 | "name":"Windows NT 4.0 Embedded",
1217 | "type":"/computer/operating_system"
1218 | },
1219 | {
1220 | "/common/topic/alias":[],
1221 | "id":"/en/opensolaris",
1222 | "name":"OpenSolaris",
1223 | "type":"/computer/operating_system"
1224 | },
1225 | {
1226 | "/common/topic/alias":[],
1227 | "id":"/en/lunix",
1228 | "name":"LUnix",
1229 | "type":"/computer/operating_system"
1230 | },
1231 | {
1232 | "/common/topic/alias":[],
1233 | "id":"/en/stratus_vos",
1234 | "name":"Stratus VOS",
1235 | "type":"/computer/operating_system"
1236 | },
1237 | {
1238 | "/common/topic/alias":[],
1239 | "id":"/en/wps-8",
1240 | "name":"WPS-8",
1241 | "type":"/computer/operating_system"
1242 | },
1243 | {
1244 | "/common/topic/alias":[],
1245 | "id":"/en/freevms",
1246 | "name":"FreeVMS",
1247 | "type":"/computer/operating_system"
1248 | },
1249 | {
1250 | "/common/topic/alias":[],
1251 | "id":"/en/apple_pascal",
1252 | "name":"Apple Pascal",
1253 | "type":"/computer/operating_system"
1254 | },
1255 | {
1256 | "/common/topic/alias":[],
1257 | "id":"/en/suse_linux_enterprise_desktop",
1258 | "name":"SUSE Linux Enterprise Desktop",
1259 | "type":"/computer/operating_system"
1260 | },
1261 | {
1262 | "/common/topic/alias":[
1263 | "Windows Mobile PPC"
1264 | ],
1265 | "id":"/en/windows_mobile",
1266 | "name":"Windows Mobile",
1267 | "type":"/computer/operating_system"
1268 | },
1269 | {
1270 | "/common/topic/alias":[
1271 | "EXEC VIII"
1272 | ],
1273 | "id":"/en/exec_8",
1274 | "name":"UNIVAC EXEC 8",
1275 | "type":"/computer/operating_system"
1276 | },
1277 | {
1278 | "/common/topic/alias":[],
1279 | "id":"/wikipedia/ja_id/430726",
1280 | "name":"MIPS RISC/os",
1281 | "type":"/computer/operating_system"
1282 | },
1283 | {
1284 | "/common/topic/alias":[],
1285 | "id":"/wikipedia/fr_id/2981615",
1286 | "name":"Integrity",
1287 | "type":"/computer/operating_system"
1288 | },
1289 | {
1290 | "/common/topic/alias":[],
1291 | "id":"/en/atari_dos",
1292 | "name":"Atari DOS",
1293 | "type":"/computer/operating_system"
1294 | },
1295 | {
1296 | "/common/topic/alias":[],
1297 | "id":"/en/eumel",
1298 | "name":"Eumel",
1299 | "type":"/computer/operating_system"
1300 | },
1301 | {
1302 | "/common/topic/alias":[],
1303 | "id":"/en/firefly_bsd",
1304 | "name":"Firefly BSD",
1305 | "type":"/computer/operating_system"
1306 | },
1307 | {
1308 | "/common/topic/alias":[],
1309 | "id":"/en/domain_os",
1310 | "name":"Domain/OS",
1311 | "type":"/computer/operating_system"
1312 | },
1313 | {
1314 | "/common/topic/alias":[],
1315 | "id":"/en/interix",
1316 | "name":"Interix",
1317 | "type":"/computer/operating_system"
1318 | },
1319 | {
1320 | "/common/topic/alias":[],
1321 | "id":"/en/scientific_linux",
1322 | "name":"Scientific Linux",
1323 | "type":"/computer/operating_system"
1324 | },
1325 | {
1326 | "/common/topic/alias":[],
1327 | "id":"/en/native_oberon",
1328 | "name":"Native Oberon",
1329 | "type":"/computer/operating_system"
1330 | },
1331 | {
1332 | "/common/topic/alias":[],
1333 | "id":"/en/bluebottle_os",
1334 | "name":"Bluebottle OS",
1335 | "type":"/computer/operating_system"
1336 | },
1337 | {
1338 | "/common/topic/alias":[],
1339 | "id":"/en/sco_openserver",
1340 | "name":"SCO OpenServer",
1341 | "type":"/computer/operating_system"
1342 | },
1343 | {
1344 | "/common/topic/alias":[],
1345 | "id":"/en/kubuntu",
1346 | "name":"Kubuntu",
1347 | "type":"/computer/operating_system"
1348 | },
1349 | {
1350 | "/common/topic/alias":[],
1351 | "id":"/en/vector_linux",
1352 | "name":"VectorLinux",
1353 | "type":"/computer/operating_system"
1354 | },
1355 | {
1356 | "/common/topic/alias":[],
1357 | "id":"/en/psion_3",
1358 | "name":"Psion Series 3",
1359 | "type":"/computer/operating_system"
1360 | },
1361 | {
1362 | "/common/topic/alias":[],
1363 | "id":"/en/l3_microkernel",
1364 | "name":"L3 microkernel",
1365 | "type":"/computer/operating_system"
1366 | },
1367 | {
1368 | "/common/topic/alias":[],
1369 | "id":"/en/ps2_linux",
1370 | "name":"Linux for PlayStation 2",
1371 | "type":"/computer/operating_system"
1372 | },
1373 | {
1374 | "/common/topic/alias":[],
1375 | "id":"/wikipedia/lv/GEOS_$00288_bitu_oper$0113t$0101jsist$0113ma$0029",
1376 | "name":"GEOS",
1377 | "type":"/computer/operating_system"
1378 | },
1379 | {
1380 | "/common/topic/alias":[],
1381 | "id":"/en/pc-ux",
1382 | "name":"PC-UX",
1383 | "type":"/computer/operating_system"
1384 | },
1385 | {
1386 | "/common/topic/alias":[],
1387 | "id":"/en/mac_os_x_server_1_0",
1388 | "name":"Mac OS X Server 1.0",
1389 | "type":"/computer/operating_system"
1390 | },
1391 | {
1392 | "/common/topic/alias":[],
1393 | "id":"/en/super-ux",
1394 | "name":"SUPER-UX",
1395 | "type":"/computer/operating_system"
1396 | },
1397 | {
1398 | "/common/topic/alias":[],
1399 | "id":"/en/spring_operating_system",
1400 | "name":"Spring",
1401 | "type":"/computer/operating_system"
1402 | },
1403 | {
1404 | "/common/topic/alias":[],
1405 | "id":"/en/cray_time_sharing_system",
1406 | "name":"Cray Time Sharing System",
1407 | "type":"/computer/operating_system"
1408 | },
1409 | {
1410 | "/common/topic/alias":[
1411 | "Linux devices",
1412 | "Linux based devices"
1413 | ],
1414 | "id":"/en/linux_devices",
1415 | "name":"Linux-powered device",
1416 | "type":"/computer/operating_system"
1417 | },
1418 | {
1419 | "/common/topic/alias":[],
1420 | "id":"/wikipedia/en_title/Wheels_$0028operating_system$0029",
1421 | "name":"Wheels",
1422 | "type":"/computer/operating_system"
1423 | },
1424 | {
1425 | "/common/topic/alias":[],
1426 | "id":"/en/openwrt",
1427 | "name":"OpenWrt",
1428 | "type":"/computer/operating_system"
1429 | },
1430 | {
1431 | "/common/topic/alias":[],
1432 | "id":"/en/microempix",
1433 | "name":"MicroEmpix",
1434 | "type":"/computer/operating_system"
1435 | },
1436 | {
1437 | "/common/topic/alias":[],
1438 | "id":"/en/windows_xp_64-bit_edition",
1439 | "name":"Windows XP 64-bit Edition",
1440 | "type":"/computer/operating_system"
1441 | },
1442 | {
1443 | "/common/topic/alias":[],
1444 | "id":"/en/hivemind",
1445 | "name":"HiveMind",
1446 | "type":"/computer/operating_system"
1447 | },
1448 | {
1449 | "/common/topic/alias":[],
1450 | "id":"/en/smartos",
1451 | "name":"SmartOS",
1452 | "type":"/computer/operating_system"
1453 | },
1454 | {
1455 | "/common/topic/alias":[],
1456 | "id":"/en/asianux",
1457 | "name":"Asianux",
1458 | "type":"/computer/operating_system"
1459 | },
1460 | {
1461 | "/common/topic/alias":[],
1462 | "id":"/en/vanguard_microkernel",
1463 | "name":"Vanguard",
1464 | "type":"/computer/operating_system"
1465 | },
1466 | {
1467 | "/common/topic/alias":[],
1468 | "id":"/wikipedia/en_title/Minerva_$0028QDOS_reimplementation$0029",
1469 | "name":"Minerva",
1470 | "type":"/computer/operating_system"
1471 | },
1472 | {
1473 | "/common/topic/alias":[],
1474 | "id":"/en/nukernel",
1475 | "name":"Nukernel",
1476 | "type":"/computer/operating_system"
1477 | },
1478 | {
1479 | "/common/topic/alias":[],
1480 | "id":"/en/mac_os_x_v10_5",
1481 | "name":"Mac OS X Leopard",
1482 | "type":"/computer/operating_system"
1483 | },
1484 | {
1485 | "/common/topic/alias":[],
1486 | "id":"/en/rc_4000_multiprogramming_system",
1487 | "name":"RC 4000 Multiprogramming System",
1488 | "type":"/computer/operating_system"
1489 | },
1490 | {
1491 | "/common/topic/alias":[],
1492 | "id":"/en/foresight_linux",
1493 | "name":"Foresight Linux",
1494 | "type":"/computer/operating_system"
1495 | },
1496 | {
1497 | "/common/topic/alias":[],
1498 | "id":"/en/dos_plus",
1499 | "name":"DOS Plus",
1500 | "type":"/computer/operating_system"
1501 | },
1502 | {
1503 | "/common/topic/alias":[],
1504 | "id":"/en/singularity",
1505 | "name":"Singularity",
1506 | "type":"/computer/operating_system"
1507 | },
1508 | {
1509 | "/common/topic/alias":[],
1510 | "id":"/en/jnode",
1511 | "name":"JNode",
1512 | "type":"/computer/operating_system"
1513 | },
1514 | {
1515 | "/common/topic/alias":[],
1516 | "id":"/en/gnu_dos",
1517 | "name":"GNU/DOS",
1518 | "type":"/computer/operating_system"
1519 | },
1520 | {
1521 | "/common/topic/alias":[],
1522 | "id":"/en/beos_r5",
1523 | "name":"BeOS R5",
1524 | "type":"/computer/operating_system"
1525 | },
1526 | {
1527 | "/common/topic/alias":[],
1528 | "id":"/en/xinu",
1529 | "name":"Xinu",
1530 | "type":"/computer/operating_system"
1531 | },
1532 | {
1533 | "/common/topic/alias":[],
1534 | "id":"/en/itron_project",
1535 | "name":"ITRON project",
1536 | "type":"/computer/operating_system"
1537 | },
1538 | {
1539 | "/common/topic/alias":[],
1540 | "id":"/en/caos_linux",
1541 | "name":"CAOS Linux",
1542 | "type":"/computer/operating_system"
1543 | },
1544 | {
1545 | "/common/topic/alias":[],
1546 | "id":"/en/freertos",
1547 | "name":"FreeRTOS",
1548 | "type":"/computer/operating_system"
1549 | },
1550 | {
1551 | "/common/topic/alias":[],
1552 | "id":"/en/prex",
1553 | "name":"Prex",
1554 | "type":"/computer/operating_system"
1555 | },
1556 | {
1557 | "/common/topic/alias":[],
1558 | "id":"/en/radix-50",
1559 | "name":"DEC Radix-50",
1560 | "type":"/computer/operating_system"
1561 | },
1562 | {
1563 | "/common/topic/alias":[],
1564 | "id":"/en/alinux",
1565 | "name":"aLinux",
1566 | "type":"/computer/operating_system"
1567 | },
1568 | {
1569 | "/common/topic/alias":[
1570 | "Minislack"
1571 | ],
1572 | "id":"/en/zenwalk_linux",
1573 | "name":"Zenwalk",
1574 | "type":"/computer/operating_system"
1575 | },
1576 | {
1577 | "/common/topic/alias":[
1578 | "Nokia Series 40"
1579 | ],
1580 | "id":"/en/nokia_series_40",
1581 | "name":"Series 40",
1582 | "type":"/computer/operating_system"
1583 | },
1584 | {
1585 | "/common/topic/alias":[
1586 | "Longhorn Client"
1587 | ],
1588 | "id":"/en/windows_vista",
1589 | "name":"Windows Vista",
1590 | "type":"/computer/operating_system"
1591 | },
1592 | {
1593 | "/common/topic/alias":[],
1594 | "id":"/en/frugalware",
1595 | "name":"Frugalware Linux",
1596 | "type":"/computer/operating_system"
1597 | },
1598 | {
1599 | "/common/topic/alias":[],
1600 | "id":"/en/uniflex",
1601 | "name":"UniFLEX",
1602 | "type":"/computer/operating_system"
1603 | },
1604 | {
1605 | "/common/topic/alias":[
1606 | "Windows Server \"Longhown\""
1607 | ],
1608 | "id":"/en/windows_server_longhorn",
1609 | "name":"Windows Server 2008",
1610 | "type":"/computer/operating_system"
1611 | },
1612 | {
1613 | "/common/topic/alias":[],
1614 | "id":"/en/dos_xl",
1615 | "name":"DOS XL",
1616 | "type":"/computer/operating_system"
1617 | },
1618 | {
1619 | "/common/topic/alias":[],
1620 | "id":"/en/opensuse",
1621 | "name":"openSUSE",
1622 | "type":"/computer/operating_system"
1623 | },
1624 | {
1625 | "/common/topic/alias":[],
1626 | "id":"/en/amiqnx",
1627 | "name":"AmiQNX",
1628 | "type":"/computer/operating_system"
1629 | },
1630 | {
1631 | "/common/topic/alias":[
1632 | "Maemo Platform"
1633 | ],
1634 | "id":"/en/maemo",
1635 | "name":"Maemo",
1636 | "type":"/computer/operating_system"
1637 | },
1638 | {
1639 | "/common/topic/alias":[],
1640 | "id":"/en/osx86",
1641 | "name":"OSx86",
1642 | "type":"/computer/operating_system"
1643 | },
1644 | {
1645 | "/common/topic/alias":[],
1646 | "id":"/en/dg_ux",
1647 | "name":"DG/UX",
1648 | "type":"/computer/operating_system"
1649 | },
1650 | {
1651 | "/common/topic/alias":[],
1652 | "id":"/en/phoenix-rtos",
1653 | "name":"Phoenix-RTOS",
1654 | "type":"/computer/operating_system"
1655 | },
1656 | {
1657 | "/common/topic/alias":[],
1658 | "id":"/en/windows_preinstallation_environment",
1659 | "name":"Windows Preinstallation Environment",
1660 | "type":"/computer/operating_system"
1661 | },
1662 | {
1663 | "/common/topic/alias":[],
1664 | "id":"/en/pardus",
1665 | "name":"Pardus",
1666 | "type":"/computer/operating_system"
1667 | },
1668 | {
1669 | "/common/topic/alias":[],
1670 | "id":"/en/blag_linux_and_gnu",
1671 | "name":"BLAG Linux and GNU",
1672 | "type":"/computer/operating_system"
1673 | },
1674 | {
1675 | "/common/topic/alias":[
1676 | "Ubuntu Lite",
1677 | "Ubuntulite"
1678 | ],
1679 | "id":"/en/ubuntu_lite",
1680 | "name":"U-lite",
1681 | "type":"/computer/operating_system"
1682 | },
1683 | {
1684 | "/common/topic/alias":[],
1685 | "id":"/wikipedia/en_title/Atomix_$0028operating_system$0029",
1686 | "name":"Atomix",
1687 | "type":"/computer/operating_system"
1688 | },
1689 | {
1690 | "/common/topic/alias":[],
1691 | "id":"/en/freespire",
1692 | "name":"Freespire",
1693 | "type":"/computer/operating_system"
1694 | },
1695 | {
1696 | "/common/topic/alias":[],
1697 | "id":"/en/gp2x",
1698 | "name":"GP2X",
1699 | "type":"/computer/operating_system"
1700 | },
1701 | {
1702 | "/common/topic/alias":[],
1703 | "id":"/en/suse_linux_enterprise_server",
1704 | "name":"SUSE Linux Enterprise Server",
1705 | "type":"/computer/operating_system"
1706 | },
1707 | {
1708 | "/common/topic/alias":[],
1709 | "id":"/wikipedia/en_title/$039CnOS",
1710 | "name":"\u03bcnOS",
1711 | "type":"/computer/operating_system"
1712 | },
1713 | {
1714 | "/common/topic/alias":[],
1715 | "id":"/en/vaxeln",
1716 | "name":"VAXELN",
1717 | "type":"/computer/operating_system"
1718 | },
1719 | {
1720 | "/common/topic/alias":[],
1721 | "id":"/en/venix",
1722 | "name":"Venix",
1723 | "type":"/computer/operating_system"
1724 | },
1725 | {
1726 | "/common/topic/alias":[],
1727 | "id":"/wikipedia/it_id/654644",
1728 | "name":"IX",
1729 | "type":"/computer/operating_system"
1730 | },
1731 | {
1732 | "/common/topic/alias":[],
1733 | "id":"/en/research_unix",
1734 | "name":"Research Unix",
1735 | "type":"/computer/operating_system"
1736 | },
1737 | {
1738 | "/common/topic/alias":[],
1739 | "id":"/en/xubuntu",
1740 | "name":"Xubuntu",
1741 | "type":"/computer/operating_system"
1742 | },
1743 | {
1744 | "/common/topic/alias":[],
1745 | "id":"/wikipedia/es/TRIX",
1746 | "name":"Trix",
1747 | "type":"/computer/operating_system"
1748 | },
1749 | {
1750 | "/common/topic/alias":[],
1751 | "id":"/en/sinix",
1752 | "name":"SINIX",
1753 | "type":"/computer/operating_system"
1754 | },
1755 | {
1756 | "/common/topic/alias":[],
1757 | "id":"/en/pentoo",
1758 | "name":"Pentoo",
1759 | "type":"/computer/operating_system"
1760 | },
1761 | {
1762 | "/common/topic/alias":[],
1763 | "id":"/en/acorn_mos",
1764 | "name":"Acorn MOS",
1765 | "type":"/computer/operating_system"
1766 | },
1767 | {
1768 | "/common/topic/alias":[],
1769 | "id":"/en/goblinx",
1770 | "name":"GoblinX",
1771 | "type":"/computer/operating_system"
1772 | },
1773 | {
1774 | "/common/topic/alias":[
1775 | "Caixa Magica"
1776 | ],
1777 | "id":"/en/caixa_magica",
1778 | "name":"Caixa M\u00e1gica",
1779 | "type":"/computer/operating_system"
1780 | },
1781 | {
1782 | "/common/topic/alias":[],
1783 | "id":"/en/annvix",
1784 | "name":"Annvix",
1785 | "type":"/computer/operating_system"
1786 | },
1787 | {
1788 | "/common/topic/alias":[],
1789 | "id":"/en/sanos",
1790 | "name":"Sanos",
1791 | "type":"/computer/operating_system"
1792 | },
1793 | {
1794 | "/common/topic/alias":[],
1795 | "id":"/en/coyotos",
1796 | "name":"Coyotos",
1797 | "type":"/computer/operating_system"
1798 | },
1799 | {
1800 | "/common/topic/alias":[
1801 | "Cross Media Bar"
1802 | ],
1803 | "id":"/en/cross_media_bar",
1804 | "name":"XrossMediaBar",
1805 | "type":"/computer/operating_system"
1806 | },
1807 | {
1808 | "/common/topic/alias":[
1809 | "RR4"
1810 | ],
1811 | "id":"/en/sabayonlinux",
1812 | "name":"Sabayon Linux",
1813 | "type":"/computer/operating_system"
1814 | },
1815 | {
1816 | "/common/topic/alias":[],
1817 | "id":"/en/ntoskrnl_exe",
1818 | "name":"ntoskrnl.exe",
1819 | "type":"/computer/operating_system"
1820 | },
1821 | {
1822 | "/common/topic/alias":[],
1823 | "id":"/en/goobuntu",
1824 | "name":"Goobuntu",
1825 | "type":"/computer/operating_system"
1826 | },
1827 | {
1828 | "/common/topic/alias":[],
1829 | "id":"/en/catos",
1830 | "name":"CatOS",
1831 | "type":"/computer/operating_system"
1832 | },
1833 | {
1834 | "/common/topic/alias":[],
1835 | "id":"/en/helenos",
1836 | "name":"HelenOS",
1837 | "type":"/computer/operating_system"
1838 | },
1839 | {
1840 | "/common/topic/alias":[],
1841 | "id":"/en/demos",
1842 | "name":"DEMOS",
1843 | "type":"/computer/operating_system"
1844 | },
1845 | {
1846 | "/common/topic/alias":[],
1847 | "id":"/en/kororaa",
1848 | "name":"Korora",
1849 | "type":"/computer/operating_system"
1850 | },
1851 | {
1852 | "/common/topic/alias":[],
1853 | "id":"/en/vine_linux",
1854 | "name":"Vine Linux",
1855 | "type":"/computer/operating_system"
1856 | },
1857 | {
1858 | "/common/topic/alias":[],
1859 | "id":"/en/tud_os",
1860 | "name":"TUD:OS",
1861 | "type":"/computer/operating_system"
1862 | },
1863 | {
1864 | "/common/topic/alias":[],
1865 | "id":"/en/pintos",
1866 | "name":"Pintos",
1867 | "type":"/computer/operating_system"
1868 | },
1869 | {
1870 | "/common/topic/alias":[],
1871 | "id":"/en/plurix",
1872 | "name":"Plurix",
1873 | "type":"/computer/operating_system"
1874 | },
1875 | {
1876 | "/common/topic/alias":[],
1877 | "id":"/en/capros",
1878 | "name":"CapROS",
1879 | "type":"/computer/operating_system"
1880 | },
1881 | {
1882 | "/common/topic/alias":[],
1883 | "id":"/en/interactive_unix",
1884 | "name":"Interactive Unix",
1885 | "type":"/computer/operating_system"
1886 | },
1887 | {
1888 | "/common/topic/alias":[],
1889 | "id":"/en/tinykrnl",
1890 | "name":"TinyKRNL",
1891 | "type":"/computer/operating_system"
1892 | },
1893 | {
1894 | "/common/topic/alias":[],
1895 | "id":"/en/xandros_server",
1896 | "name":"Xandros Server",
1897 | "type":"/computer/operating_system"
1898 | },
1899 | {
1900 | "/common/topic/alias":[],
1901 | "id":"/en/hpbsd",
1902 | "name":"HPBSD",
1903 | "type":"/computer/operating_system"
1904 | },
1905 | {
1906 | "/common/topic/alias":[],
1907 | "id":"/en/mcnlive",
1908 | "name":"MCNLive",
1909 | "type":"/computer/operating_system"
1910 | },
1911 | {
1912 | "/common/topic/alias":[],
1913 | "id":"/wikipedia/en_title/TUNIS",
1914 | "name":"TUNIS",
1915 | "type":"/computer/operating_system"
1916 | },
1917 | {
1918 | "/common/topic/alias":[],
1919 | "id":"/en/argante",
1920 | "name":"Argante",
1921 | "type":"/computer/operating_system"
1922 | },
1923 | {
1924 | "/common/topic/alias":[],
1925 | "id":"/en/minix_3",
1926 | "name":"MINIX 3",
1927 | "type":"/computer/operating_system"
1928 | },
1929 | {
1930 | "/common/topic/alias":[
1931 | "Auditor Security Collection"
1932 | ],
1933 | "id":"/en/backtrack",
1934 | "name":"BackTrack",
1935 | "type":"/computer/operating_system"
1936 | },
1937 | {
1938 | "/common/topic/alias":[],
1939 | "id":"/en/vps_vm",
1940 | "name":"VPS/VM",
1941 | "type":"/computer/operating_system"
1942 | },
1943 | {
1944 | "/common/topic/alias":[],
1945 | "id":"/en/dex4u",
1946 | "name":"DexOS",
1947 | "type":"/computer/operating_system"
1948 | },
1949 | {
1950 | "/common/topic/alias":[],
1951 | "id":"/en/minix-vmd",
1952 | "name":"Minix-vmd",
1953 | "type":"/computer/operating_system"
1954 | },
1955 | {
1956 | "/common/topic/alias":[],
1957 | "id":"/en/aurora_sparc_linux",
1958 | "name":"Aurora SPARC Linux",
1959 | "type":"/computer/operating_system"
1960 | },
1961 | {
1962 | "/common/topic/alias":[],
1963 | "id":"/en/pikeos",
1964 | "name":"PikeOS",
1965 | "type":"/computer/operating_system"
1966 | },
1967 | {
1968 | "/common/topic/alias":[],
1969 | "id":"/en/btron",
1970 | "name":"BTRON",
1971 | "type":"/computer/operating_system"
1972 | },
1973 | {
1974 | "/common/topic/alias":[],
1975 | "id":"/en/rocks_cluster_distribution",
1976 | "name":"Rocks Cluster Distribution",
1977 | "type":"/computer/operating_system"
1978 | },
1979 | {
1980 | "/common/topic/alias":[],
1981 | "id":"/en/fluxbuntu",
1982 | "name":"Fluxbuntu",
1983 | "type":"/computer/operating_system"
1984 | },
1985 | {
1986 | "/common/topic/alias":[
1987 | "Linux",
1988 | "GNU+Linux"
1989 | ],
1990 | "id":"/en/linux",
1991 | "name":"GNU/Linux",
1992 | "type":"/computer/operating_system"
1993 | },
1994 | {
1995 | "/common/topic/alias":[],
1996 | "id":"/en/meikos",
1997 | "name":"MeikOS",
1998 | "type":"/computer/operating_system"
1999 | },
2000 | {
2001 | "/common/topic/alias":[],
2002 | "id":"/wikipedia/en_title/Nemesis_$0028operating_system$0029",
2003 | "name":"Nemesis",
2004 | "type":"/computer/operating_system"
2005 | },
2006 | {
2007 | "/common/topic/alias":[],
2008 | "id":"/en/symbos",
2009 | "name":"SymbOS",
2010 | "type":"/computer/operating_system"
2011 | },
2012 | {
2013 | "/common/topic/alias":[],
2014 | "id":"/en/tuga",
2015 | "name":"Tuga",
2016 | "type":"/computer/operating_system"
2017 | },
2018 | {
2019 | "/common/topic/alias":[],
2020 | "id":"/en/dreamlinux",
2021 | "name":"Dreamlinux",
2022 | "type":"/computer/operating_system"
2023 | },
2024 | {
2025 | "/common/topic/alias":[],
2026 | "id":"/en/vsta",
2027 | "name":"VSTa",
2028 | "type":"/computer/operating_system"
2029 | },
2030 | {
2031 | "/common/topic/alias":[],
2032 | "id":"/en/hdos",
2033 | "name":"HDOS",
2034 | "type":"/computer/operating_system"
2035 | },
2036 | {
2037 | "/common/topic/alias":[],
2038 | "id":"/wikipedia/ru_id/1673683",
2039 | "name":"CDC SCOPE",
2040 | "type":"/computer/operating_system"
2041 | },
2042 | {
2043 | "/common/topic/alias":[],
2044 | "id":"/en/linkat",
2045 | "name":"Linkat",
2046 | "type":"/computer/operating_system"
2047 | },
2048 | {
2049 | "/common/topic/alias":[],
2050 | "id":"/en/elive",
2051 | "name":"Elive",
2052 | "type":"/computer/operating_system"
2053 | },
2054 | {
2055 | "/common/topic/alias":[],
2056 | "id":"/en/windows_xp_home_edition",
2057 | "name":"Windows XP Home Edition",
2058 | "type":"/computer/operating_system"
2059 | },
2060 | {
2061 | "/common/topic/alias":[],
2062 | "id":"/en/windows_xp_professional",
2063 | "name":"Windows XP Professional",
2064 | "type":"/computer/operating_system"
2065 | },
2066 | {
2067 | "/common/topic/alias":[],
2068 | "id":"/m/01xrh57",
2069 | "name":"Windows XP Tablet PC Edition",
2070 | "type":"/computer/operating_system"
2071 | },
2072 | {
2073 | "/common/topic/alias":[],
2074 | "id":"/en/windows_xp_starter_edition",
2075 | "name":"Windows XP Starter Edition",
2076 | "type":"/computer/operating_system"
2077 | },
2078 | {
2079 | "/common/topic/alias":[],
2080 | "id":"/en/windows_2000_datacenter_server",
2081 | "name":"Windows 2000 Datacenter Server",
2082 | "type":"/computer/operating_system"
2083 | },
2084 | {
2085 | "/common/topic/alias":[],
2086 | "id":"/en/windows_2000_advanced_server",
2087 | "name":"Windows 2000 Advanced Server",
2088 | "type":"/computer/operating_system"
2089 | },
2090 | {
2091 | "/common/topic/alias":[],
2092 | "id":"/en/windows_2000_server",
2093 | "name":"Windows 2000 Server",
2094 | "type":"/computer/operating_system"
2095 | },
2096 | {
2097 | "/common/topic/alias":[],
2098 | "id":"/en/windows_2000_professional",
2099 | "name":"Windows 2000 Professional",
2100 | "type":"/computer/operating_system"
2101 | },
2102 | {
2103 | "/common/topic/alias":[],
2104 | "id":"/en/windows_2000_advanced_server_limited_edition",
2105 | "name":"Windows 2000 Advanced Server Limited Edition",
2106 | "type":"/computer/operating_system"
2107 | },
2108 | {
2109 | "/common/topic/alias":[],
2110 | "id":"/en/ms_dos_1_25",
2111 | "name":"MS-DOS 1.25",
2112 | "type":"/computer/operating_system"
2113 | },
2114 | {
2115 | "/common/topic/alias":[],
2116 | "id":"/en/ms_dos_2_0",
2117 | "name":"MS-DOS 2.0",
2118 | "type":"/computer/operating_system"
2119 | },
2120 | {
2121 | "/common/topic/alias":[],
2122 | "id":"/en/ms_dos_3_0",
2123 | "name":"MS-DOS 3.0",
2124 | "type":"/computer/operating_system"
2125 | },
2126 | {
2127 | "/common/topic/alias":[],
2128 | "id":"/en/ms_dos_4_0",
2129 | "name":"MS-DOS 4.0",
2130 | "type":"/computer/operating_system"
2131 | },
2132 | {
2133 | "/common/topic/alias":[],
2134 | "id":"/en/ms_dos_5_0",
2135 | "name":"MS-DOS 5.0",
2136 | "type":"/computer/operating_system"
2137 | },
2138 | {
2139 | "/common/topic/alias":[],
2140 | "id":"/en/ms_dos_6_0",
2141 | "name":"MS-DOS 6.0",
2142 | "type":"/computer/operating_system"
2143 | },
2144 | {
2145 | "/common/topic/alias":[],
2146 | "id":"/en/ms_dos_7_0",
2147 | "name":"MS-DOS 7.0",
2148 | "type":"/computer/operating_system"
2149 | },
2150 | {
2151 | "/common/topic/alias":[],
2152 | "id":"/en/ms_dos_8_0",
2153 | "name":"MS-DOS 8.0",
2154 | "type":"/computer/operating_system"
2155 | },
2156 | {
2157 | "/common/topic/alias":[],
2158 | "id":"/en/pc_dos_2000",
2159 | "name":"PC DOS 2000",
2160 | "type":"/computer/operating_system"
2161 | },
2162 | {
2163 | "/common/topic/alias":[],
2164 | "id":"/en/pc_dos_7_0",
2165 | "name":"PC DOS 7.0",
2166 | "type":"/computer/operating_system"
2167 | },
2168 | {
2169 | "/common/topic/alias":[],
2170 | "id":"/en/pc_dos_6_0",
2171 | "name":"PC DOS 6.0",
2172 | "type":"/computer/operating_system"
2173 | },
2174 | {
2175 | "/common/topic/alias":[],
2176 | "id":"/en/pc_dos_5_0",
2177 | "name":"PC DOS 5.0",
2178 | "type":"/computer/operating_system"
2179 | },
2180 | {
2181 | "/common/topic/alias":[],
2182 | "id":"/en/pc_dos_4_0",
2183 | "name":"PC DOS 4.0",
2184 | "type":"/computer/operating_system"
2185 | },
2186 | {
2187 | "/common/topic/alias":[],
2188 | "id":"/en/pc_dos_3_3",
2189 | "name":"PC DOS 3.3",
2190 | "type":"/computer/operating_system"
2191 | },
2192 | {
2193 | "/common/topic/alias":[],
2194 | "id":"/en/pc_dos_2_0",
2195 | "name":"PC DOS 2.0",
2196 | "type":"/computer/operating_system"
2197 | },
2198 | {
2199 | "/common/topic/alias":[],
2200 | "id":"/en/pc_dos_1_0",
2201 | "name":"PC DOS 1.0",
2202 | "type":"/computer/operating_system"
2203 | },
2204 | {
2205 | "/common/topic/alias":[],
2206 | "id":"/en/amiga_os_2_0",
2207 | "name":"Amiga OS 2.0",
2208 | "type":"/computer/operating_system"
2209 | },
2210 | {
2211 | "/common/topic/alias":[],
2212 | "id":"/en/fermi_linux",
2213 | "name":"Fermi Linux",
2214 | "type":"/computer/operating_system"
2215 | },
2216 | {
2217 | "/common/topic/alias":[],
2218 | "id":"/en/mythdora",
2219 | "name":"MythDora",
2220 | "type":"/computer/operating_system"
2221 | },
2222 | {
2223 | "/common/topic/alias":[],
2224 | "id":"/en/usix",
2225 | "name":"USIX",
2226 | "type":"/computer/operating_system"
2227 | },
2228 | {
2229 | "/common/topic/alias":[],
2230 | "id":"/wikipedia/en_title/House_$0028operating_system$0029",
2231 | "name":"House",
2232 | "type":"/computer/operating_system"
2233 | },
2234 | {
2235 | "/common/topic/alias":[],
2236 | "id":"/en/suse_linux_distributions",
2237 | "name":"SUSE Linux distributions",
2238 | "type":"/computer/operating_system"
2239 | },
2240 | {
2241 | "/common/topic/alias":[],
2242 | "id":"/en/is_dos",
2243 | "name":"IS-DOS",
2244 | "type":"/computer/operating_system"
2245 | },
2246 | {
2247 | "/common/topic/alias":[],
2248 | "id":"/en/tr_dos",
2249 | "name":"TR-DOS",
2250 | "type":"/computer/operating_system"
2251 | },
2252 | {
2253 | "/common/topic/alias":[],
2254 | "id":"/en/soft_hard_real_time_kernel",
2255 | "name":"Soft Hard Real-Time Kernel",
2256 | "type":"/computer/operating_system"
2257 | },
2258 | {
2259 | "/common/topic/alias":[],
2260 | "id":"/en/linux_mint",
2261 | "name":"Linux Mint",
2262 | "type":"/computer/operating_system"
2263 | },
2264 | {
2265 | "/common/topic/alias":[],
2266 | "id":"/wikipedia/ru/CDC_NOS",
2267 | "name":"NOS",
2268 | "type":"/computer/operating_system"
2269 | },
2270 | {
2271 | "/common/topic/alias":[],
2272 | "id":"/en/sidux",
2273 | "name":"aptosid",
2274 | "type":"/computer/operating_system"
2275 | },
2276 | {
2277 | "/common/topic/alias":[],
2278 | "id":"/en/ubuntu_studio",
2279 | "name":"Ubuntu Studio",
2280 | "type":"/computer/operating_system"
2281 | },
2282 | {
2283 | "/common/topic/alias":[],
2284 | "id":"/en/unix_ns",
2285 | "name":"Unix/NS",
2286 | "type":"/computer/operating_system"
2287 | },
2288 | {
2289 | "/common/topic/alias":[],
2290 | "id":"/en/osf_1",
2291 | "name":"OSF/1",
2292 | "type":"/computer/operating_system"
2293 | },
2294 | {
2295 | "/common/topic/alias":[],
2296 | "id":"/en/freebsd_1_x",
2297 | "name":"FreeBSD 1.x",
2298 | "type":"/computer/operating_system"
2299 | },
2300 | {
2301 | "/common/topic/alias":[],
2302 | "id":"/en/freebsd_1_0",
2303 | "name":"FreeBSD 1.0",
2304 | "type":"/computer/operating_system"
2305 | },
2306 | {
2307 | "/common/topic/alias":[],
2308 | "id":"/en/freebsd_1_1",
2309 | "name":"FreeBSD 1.1",
2310 | "type":"/computer/operating_system"
2311 | },
2312 | {
2313 | "/common/topic/alias":[],
2314 | "id":"/en/freebsd_1_1_5",
2315 | "name":"FreeBSD 1.1.5",
2316 | "type":"/computer/operating_system"
2317 | },
2318 | {
2319 | "/common/topic/alias":[],
2320 | "id":"/en/freebsd_1_1_5_1",
2321 | "name":"FreeBSD 1.1.5.1",
2322 | "type":"/computer/operating_system"
2323 | },
2324 | {
2325 | "/common/topic/alias":[],
2326 | "id":"/en/freebsd_2_x",
2327 | "name":"FreeBSD 2.x",
2328 | "type":"/computer/operating_system"
2329 | },
2330 | {
2331 | "/common/topic/alias":[],
2332 | "id":"/en/freebsd_2_0",
2333 | "name":"FreeBSD 2.0",
2334 | "type":"/computer/operating_system"
2335 | },
2336 | {
2337 | "/common/topic/alias":[],
2338 | "id":"/en/freebsd_2_0_5",
2339 | "name":"FreeBSD 2.0.5",
2340 | "type":"/computer/operating_system"
2341 | },
2342 | {
2343 | "/common/topic/alias":[],
2344 | "id":"/en/freebsd_2_1",
2345 | "name":"FreeBSD 2.1",
2346 | "type":"/computer/operating_system"
2347 | },
2348 | {
2349 | "/common/topic/alias":[],
2350 | "id":"/en/freebsd_2_1_5",
2351 | "name":"FreeBSD 2.1.5",
2352 | "type":"/computer/operating_system"
2353 | },
2354 | {
2355 | "/common/topic/alias":[],
2356 | "id":"/en/freebsd_2_1_6",
2357 | "name":"FreeBSD 2.1.6",
2358 | "type":"/computer/operating_system"
2359 | },
2360 | {
2361 | "/common/topic/alias":[],
2362 | "id":"/en/freebsd_2_1_7",
2363 | "name":"FreeBSD 2.1.7",
2364 | "type":"/computer/operating_system"
2365 | },
2366 | {
2367 | "/common/topic/alias":[],
2368 | "id":"/en/freebsd_2_2",
2369 | "name":"FreeBSD 2.2",
2370 | "type":"/computer/operating_system"
2371 | },
2372 | {
2373 | "/common/topic/alias":[],
2374 | "id":"/en/freebsd_2_2_1",
2375 | "name":"FreeBSD 2.2.1",
2376 | "type":"/computer/operating_system"
2377 | },
2378 | {
2379 | "/common/topic/alias":[],
2380 | "id":"/en/freebsd_2_2_2",
2381 | "name":"FreeBSD 2.2.2",
2382 | "type":"/computer/operating_system"
2383 | },
2384 | {
2385 | "/common/topic/alias":[],
2386 | "id":"/en/freebsd_2_2_5",
2387 | "name":"FreeBSD 2.2.5",
2388 | "type":"/computer/operating_system"
2389 | },
2390 | {
2391 | "/common/topic/alias":[
2392 | "JOLIX"
2393 | ],
2394 | "id":"/en/386bsd",
2395 | "name":"386BSD",
2396 | "type":"/computer/operating_system"
2397 | },
2398 | {
2399 | "/common/topic/alias":[],
2400 | "id":"/en/freebsd_4_8",
2401 | "name":"FreeBSD 4.8",
2402 | "type":"/computer/operating_system"
2403 | },
2404 | {
2405 | "/common/topic/alias":[],
2406 | "id":"/en/4_3bsd_net_2",
2407 | "name":"4.3BSD NET/2",
2408 | "type":"/computer/operating_system"
2409 | },
2410 | {
2411 | "/common/topic/alias":[],
2412 | "id":"/en/freebsd_4_x",
2413 | "name":"FreeBSD 4.x",
2414 | "type":"/computer/operating_system"
2415 | },
2416 | {
2417 | "/common/topic/alias":[
2418 | "AutoCAD"
2419 | ],
2420 | "id":"/en/autocad",
2421 | "name":"Autocad",
2422 | "type":"/computer/operating_system"
2423 | },
2424 | {
2425 | "/common/topic/alias":[],
2426 | "id":"/en/fedora_7",
2427 | "name":"Fedora 7",
2428 | "type":"/computer/operating_system"
2429 | },
2430 | {
2431 | "/common/topic/alias":[],
2432 | "id":"/en/fedora_core_1",
2433 | "name":"Fedora Core 1",
2434 | "type":"/computer/operating_system"
2435 | },
2436 | {
2437 | "/common/topic/alias":[],
2438 | "id":"/en/fedora_core_2",
2439 | "name":"Fedora Core 2",
2440 | "type":"/computer/operating_system"
2441 | },
2442 | {
2443 | "/common/topic/alias":[],
2444 | "id":"/en/fedora_core_3",
2445 | "name":"Fedora Core 3",
2446 | "type":"/computer/operating_system"
2447 | },
2448 | {
2449 | "/common/topic/alias":[],
2450 | "id":"/en/fedora_core_4",
2451 | "name":"Fedora Core 4",
2452 | "type":"/computer/operating_system"
2453 | },
2454 | {
2455 | "/common/topic/alias":[],
2456 | "id":"/en/fedora_core_6",
2457 | "name":"Fedora Core 6",
2458 | "type":"/computer/operating_system"
2459 | },
2460 | {
2461 | "/common/topic/alias":[],
2462 | "id":"/en/windows_server",
2463 | "name":"Windows Server",
2464 | "type":"/computer/operating_system"
2465 | },
2466 | {
2467 | "/common/topic/alias":[],
2468 | "id":"/en/msx_dos",
2469 | "name":"MSX-DOS",
2470 | "type":"/computer/operating_system"
2471 | },
2472 | {
2473 | "/common/topic/alias":[
2474 | "Fedora Core"
2475 | ],
2476 | "id":"/en/fedora",
2477 | "name":"Fedora",
2478 | "type":"/computer/operating_system"
2479 | },
2480 | {
2481 | "/common/topic/alias":[],
2482 | "id":"/en/sam_linux",
2483 | "name":"SAM Linux",
2484 | "type":"/computer/operating_system"
2485 | },
2486 | {
2487 | "/common/topic/alias":[],
2488 | "id":"/en/talon_dsp_rtos",
2489 | "name":"Talon DSP RTOS",
2490 | "type":"/computer/operating_system"
2491 | },
2492 | {
2493 | "/common/topic/alias":[],
2494 | "id":"/wikipedia/de_id/2997683",
2495 | "name":"JX",
2496 | "type":"/computer/operating_system"
2497 | },
2498 | {
2499 | "/common/topic/alias":[],
2500 | "id":"/en/csi_dos",
2501 | "name":"CSI-DOS",
2502 | "type":"/computer/operating_system"
2503 | },
2504 | {
2505 | "/common/topic/alias":[],
2506 | "id":"/en/bkunix",
2507 | "name":"BKUNIX",
2508 | "type":"/computer/operating_system"
2509 | },
2510 | {
2511 | "/common/topic/alias":[],
2512 | "id":"/en/mnos",
2513 | "name":"MNOS",
2514 | "type":"/computer/operating_system"
2515 | },
2516 | {
2517 | "/common/topic/alias":[],
2518 | "id":"/en/aros_research_operating_system",
2519 | "name":"AROS Research Operating System",
2520 | "type":"/computer/operating_system"
2521 | },
2522 | {
2523 | "/common/topic/alias":[],
2524 | "id":"/wikipedia/ru_id/741719",
2525 | "name":"OZONE",
2526 | "type":"/computer/operating_system"
2527 | },
2528 | {
2529 | "/common/topic/alias":[],
2530 | "id":"/en/fmi_os",
2531 | "name":"FMI/OS",
2532 | "type":"/computer/operating_system"
2533 | },
2534 | {
2535 | "/common/topic/alias":[],
2536 | "id":"/wikipedia/en_title/Hydra_$0028operating_system$0029",
2537 | "name":"Hydra",
2538 | "type":"/computer/operating_system"
2539 | },
2540 | {
2541 | "/common/topic/alias":[],
2542 | "id":"/en/kaneton",
2543 | "name":"Kaneton",
2544 | "type":"/computer/operating_system"
2545 | },
2546 | {
2547 | "/common/topic/alias":[],
2548 | "id":"/en/amazon_elastic_compute_cloud",
2549 | "name":"Amazon Elastic Compute Cloud",
2550 | "type":"/computer/operating_system"
2551 | },
2552 | {
2553 | "/common/topic/alias":[],
2554 | "id":"/en/mythbuntu",
2555 | "name":"Mythbuntu",
2556 | "type":"/computer/operating_system"
2557 | },
2558 | {
2559 | "/common/topic/alias":[
2560 | "PlayStation 3 System Software"
2561 | ],
2562 | "id":"/en/playstation_3_system_software",
2563 | "name":"PlayStation 3 system software",
2564 | "type":"/computer/operating_system"
2565 | },
2566 | {
2567 | "/common/topic/alias":[],
2568 | "id":"/wikipedia/en_title/GeckOS",
2569 | "name":"GeckOS",
2570 | "type":"/computer/operating_system"
2571 | },
2572 | {
2573 | "/common/topic/alias":[],
2574 | "id":"/wikipedia/ru_id/1558243",
2575 | "name":"Pilot",
2576 | "type":"/computer/operating_system"
2577 | },
2578 | {
2579 | "/common/topic/alias":[],
2580 | "id":"/en/windows_vista_home_basic",
2581 | "name":"Windows Vista Home Basic",
2582 | "type":"/computer/operating_system"
2583 | },
2584 | {
2585 | "/common/topic/alias":[],
2586 | "id":"/en/windows_vista_home_premium",
2587 | "name":"Windows Vista Home Premium",
2588 | "type":"/computer/operating_system"
2589 | },
2590 | {
2591 | "/common/topic/alias":[],
2592 | "id":"/en/windows_vista_business",
2593 | "name":"Windows Vista Business",
2594 | "type":"/computer/operating_system"
2595 | },
2596 | {
2597 | "/common/topic/alias":[],
2598 | "id":"/en/windows_vista_ultimate",
2599 | "name":"Windows Vista Ultimate",
2600 | "type":"/computer/operating_system"
2601 | },
2602 | {
2603 | "/common/topic/alias":[],
2604 | "id":"/en/kolibrios",
2605 | "name":"KolibriOS",
2606 | "type":"/computer/operating_system"
2607 | },
2608 | {
2609 | "/common/topic/alias":[],
2610 | "id":"/wikipedia/en_title/SPIN_$0028operating_system$0029",
2611 | "name":"SPIN",
2612 | "type":"/computer/operating_system"
2613 | },
2614 | {
2615 | "/common/topic/alias":[
2616 | "DOS/BATCH 11"
2617 | ],
2618 | "id":"/en/dec_batch_11_dos_11",
2619 | "name":"DEC BATCH-11/DOS-11",
2620 | "type":"/computer/operating_system"
2621 | },
2622 | {
2623 | "/common/topic/alias":[],
2624 | "id":"/en/dspnano_rtos",
2625 | "name":"DSPnano RTOS",
2626 | "type":"/computer/operating_system"
2627 | },
2628 | {
2629 | "/common/topic/alias":[
2630 | "Android OS"
2631 | ],
2632 | "id":"/en/gphone",
2633 | "name":"Android",
2634 | "type":"/computer/operating_system"
2635 | },
2636 | {
2637 | "/common/topic/alias":[],
2638 | "id":"/en/tss_8",
2639 | "name":"TSS-8",
2640 | "type":"/computer/operating_system"
2641 | },
2642 | {
2643 | "/common/topic/alias":[
2644 | "Test os"
2645 | ],
2646 | "id":"/en/test_os",
2647 | "name":"Test OS",
2648 | "type":"/computer/operating_system"
2649 | },
2650 | {
2651 | "/common/topic/alias":[],
2652 | "id":"/en/share_operating_system",
2653 | "name":"SHARE Operating System",
2654 | "type":"/computer/operating_system"
2655 | },
2656 | {
2657 | "/common/topic/alias":[],
2658 | "id":"/en/symbian_os_9_1",
2659 | "name":"Symbian OS 9.1",
2660 | "type":"/computer/operating_system"
2661 | },
2662 | {
2663 | "/common/topic/alias":[],
2664 | "id":"/m/02_7mg3",
2665 | "name":"TRAX",
2666 | "type":"/computer/operating_system"
2667 | },
2668 | {
2669 | "/common/topic/alias":[],
2670 | "id":"/en/openmamba",
2671 | "name":"Openmamba",
2672 | "type":"/computer/operating_system"
2673 | },
2674 | {
2675 | "/common/topic/alias":[],
2676 | "id":"/en/dos_vs",
2677 | "name":"DOS/VS",
2678 | "type":"/computer/operating_system"
2679 | },
2680 | {
2681 | "/common/topic/alias":[],
2682 | "id":"/en/losethos",
2683 | "name":"LoseThos",
2684 | "type":"/computer/operating_system"
2685 | },
2686 | {
2687 | "/common/topic/alias":[],
2688 | "id":"/en/ibm_4690_os",
2689 | "name":"4690 Operating System",
2690 | "type":"/computer/operating_system"
2691 | },
2692 | {
2693 | "/common/topic/alias":[],
2694 | "id":"/en/phoenix_os",
2695 | "name":"Phoenix OS",
2696 | "type":"/computer/operating_system"
2697 | },
2698 | {
2699 | "/common/topic/alias":[],
2700 | "id":"/en/chibios_rt",
2701 | "name":"ChibiOS/RT",
2702 | "type":"/computer/operating_system"
2703 | },
2704 | {
2705 | "/common/topic/alias":[],
2706 | "id":"/wikipedia/en_title/Es_$0028operating_system$0029",
2707 | "name":"es",
2708 | "type":"/computer/operating_system"
2709 | },
2710 | {
2711 | "/common/topic/alias":[],
2712 | "id":"/en/enterprisebsd",
2713 | "name":"EnterpriseBSD",
2714 | "type":"/computer/operating_system"
2715 | },
2716 | {
2717 | "/common/topic/alias":[
2718 | "RSDOS"
2719 | ],
2720 | "id":"/en/disk_extended_color_basic",
2721 | "name":"Disk Extended Color Basic",
2722 | "type":"/computer/operating_system"
2723 | },
2724 | {
2725 | "/common/topic/alias":[
2726 | "Geubuntu"
2727 | ],
2728 | "id":"/en/opengeu",
2729 | "name":"OpenGEU",
2730 | "type":"/computer/operating_system"
2731 | },
2732 | {
2733 | "/common/topic/alias":[],
2734 | "id":"/wikipedia/de_id/4282247",
2735 | "name":"Pandora",
2736 | "type":"/computer/operating_system"
2737 | },
2738 | {
2739 | "/common/topic/alias":[],
2740 | "id":"/en/windows_mobile_smartphone",
2741 | "name":"Windows Mobile Smartphone",
2742 | "type":"/computer/operating_system"
2743 | },
2744 | {
2745 | "/common/topic/alias":[],
2746 | "id":"/wikipedia/ru_id/125914",
2747 | "name":"Miraculix",
2748 | "type":"/computer/operating_system"
2749 | },
2750 | {
2751 | "/common/topic/alias":[],
2752 | "id":"/en/tinyme",
2753 | "name":"TinyMe",
2754 | "type":"/computer/operating_system"
2755 | },
2756 | {
2757 | "/common/topic/alias":[],
2758 | "id":"/wikipedia/it/Cosmos_$0028sistema_operativo$0029",
2759 | "name":"Cosmos",
2760 | "type":"/computer/operating_system"
2761 | },
2762 | {
2763 | "/common/topic/alias":[],
2764 | "id":"/en/kayou",
2765 | "name":"Kayou",
2766 | "type":"/computer/operating_system"
2767 | },
2768 | {
2769 | "/common/topic/alias":[],
2770 | "id":"/en/fusion_rtos",
2771 | "name":"Fusion RTOS",
2772 | "type":"/computer/operating_system"
2773 | },
2774 | {
2775 | "/common/topic/alias":[],
2776 | "id":"/en/windows_server_2008_r2",
2777 | "name":"Windows Server 2008 R2",
2778 | "type":"/computer/operating_system"
2779 | },
2780 | {
2781 | "/common/topic/alias":[
2782 | "iPhone OS"
2783 | ],
2784 | "id":"/en/iphone_os",
2785 | "name":"iOS",
2786 | "type":"/computer/operating_system"
2787 | },
2788 | {
2789 | "/common/topic/alias":[],
2790 | "id":"/en/blackberry_os",
2791 | "name":"BlackBerry OS",
2792 | "type":"/computer/operating_system"
2793 | },
2794 | {
2795 | "/common/topic/alias":[],
2796 | "id":"/en/linpus_linux",
2797 | "name":"Linpus Linux",
2798 | "type":"/computer/operating_system"
2799 | },
2800 | {
2801 | "/common/topic/alias":[],
2802 | "id":"/en/ensemble",
2803 | "name":"Ensemble",
2804 | "type":"/computer/operating_system"
2805 | },
2806 | {
2807 | "/common/topic/alias":[],
2808 | "id":"/en/sharpos",
2809 | "name":"SharpOS",
2810 | "type":"/computer/operating_system"
2811 | },
2812 | {
2813 | "/common/topic/alias":[],
2814 | "id":"/en/newdos_80",
2815 | "name":"NewDos/80",
2816 | "type":"/computer/operating_system"
2817 | },
2818 | {
2819 | "/common/topic/alias":[],
2820 | "id":"/en/ubuntu_jeos",
2821 | "name":"Ubuntu JeOS",
2822 | "type":"/computer/operating_system"
2823 | },
2824 | {
2825 | "/common/topic/alias":[],
2826 | "id":"/en/moblin_project",
2827 | "name":"Moblin",
2828 | "type":"/computer/operating_system"
2829 | },
2830 | {
2831 | "/common/topic/alias":[],
2832 | "id":"/en/bertos",
2833 | "name":"BeRTOS",
2834 | "type":"/computer/operating_system"
2835 | },
2836 | {
2837 | "/common/topic/alias":[],
2838 | "id":"/en/windows_vista_enterprise",
2839 | "name":"Windows Vista Enterprise",
2840 | "type":"/computer/operating_system"
2841 | },
2842 | {
2843 | "/common/topic/alias":[],
2844 | "id":"/m/046cmbj",
2845 | "name":"Chrysalis",
2846 | "type":"/computer/operating_system"
2847 | },
2848 | {
2849 | "/common/topic/alias":[
2850 | "Snow Leopard"
2851 | ],
2852 | "id":"/en/mac_os_x_v10_6",
2853 | "name":"Mac OS X Snow Leopard",
2854 | "type":"/computer/operating_system"
2855 | },
2856 | {
2857 | "/common/topic/alias":[],
2858 | "id":"/en/ubuntu_netbook_remix",
2859 | "name":"Ubuntu Netbook Edition",
2860 | "type":"/computer/operating_system"
2861 | },
2862 | {
2863 | "/common/topic/alias":[],
2864 | "id":"/en/berkeley_timesharing_system",
2865 | "name":"Berkeley Timesharing System",
2866 | "type":"/computer/operating_system"
2867 | },
2868 | {
2869 | "/common/topic/alias":[],
2870 | "id":"/wikipedia/es_id/1825612",
2871 | "name":"Midori",
2872 | "type":"/computer/operating_system"
2873 | },
2874 | {
2875 | "/common/topic/alias":[],
2876 | "id":"/en/dc_osx",
2877 | "name":"DC/OSx",
2878 | "type":"/computer/operating_system"
2879 | },
2880 | {
2881 | "/common/topic/alias":[
2882 | "Ubuntu Super Edition"
2883 | ],
2884 | "id":"/en/ubuntu_super_edition",
2885 | "name":"Super OS",
2886 | "type":"/computer/operating_system"
2887 | },
2888 | {
2889 | "/common/topic/alias":[],
2890 | "id":"/en/windows_server_2000",
2891 | "name":"Windows Server 2000",
2892 | "type":"/computer/operating_system"
2893 | },
2894 | {
2895 | "/common/topic/alias":[],
2896 | "id":"/m/04g1mvy",
2897 | "name":"Ultimate Edition",
2898 | "type":"/computer/operating_system"
2899 | },
2900 | {
2901 | "/common/topic/alias":[],
2902 | "id":"/en/windows_server_2008_standard_edition",
2903 | "name":"Windows Server 2008 Standard Edition",
2904 | "type":"/computer/operating_system"
2905 | },
2906 | {
2907 | "/common/topic/alias":[],
2908 | "id":"/en/windows_server_2008_enterprise_edition",
2909 | "name":"Windows Server 2008 Enterprise Edition",
2910 | "type":"/computer/operating_system"
2911 | },
2912 | {
2913 | "/common/topic/alias":[],
2914 | "id":"/en/windows_server_2008_datacenter_edition",
2915 | "name":"Windows Server 2008 Datacenter Edition",
2916 | "type":"/computer/operating_system"
2917 | },
2918 | {
2919 | "/common/topic/alias":[],
2920 | "id":"/en/windows_hpc_server_2008",
2921 | "name":"Windows HPC Server 2008",
2922 | "type":"/computer/operating_system"
2923 | },
2924 | {
2925 | "/common/topic/alias":[],
2926 | "id":"/en/windows_web_server_2008",
2927 | "name":"Windows Web Server 2008",
2928 | "type":"/computer/operating_system"
2929 | },
2930 | {
2931 | "/common/topic/alias":[],
2932 | "id":"/en/windows_storage_server_2008",
2933 | "name":"Windows Storage Server 2008",
2934 | "type":"/computer/operating_system"
2935 | },
2936 | {
2937 | "/common/topic/alias":[],
2938 | "id":"/en/windows_small_business_server_2008",
2939 | "name":"Windows Small Business Server 2008",
2940 | "type":"/computer/operating_system"
2941 | },
2942 | {
2943 | "/common/topic/alias":[
2944 | "Windows Essential Business Server"
2945 | ],
2946 | "id":"/en/windows_essential_business_server_2008",
2947 | "name":"Windows Essential Business Server 2008",
2948 | "type":"/computer/operating_system"
2949 | },
2950 | {
2951 | "/common/topic/alias":[],
2952 | "id":"/en/windows_server_2008_for_itanium_based_systems",
2953 | "name":"Windows Server 2008 for Itanium-based Systems",
2954 | "type":"/computer/operating_system"
2955 | },
2956 | {
2957 | "/common/topic/alias":[],
2958 | "id":"/en/gp2x_wiz",
2959 | "name":"GP2X Wiz",
2960 | "type":"/computer/operating_system"
2961 | },
2962 | {
2963 | "/common/topic/alias":[],
2964 | "id":"/en/futureos",
2965 | "name":"FutureOS",
2966 | "type":"/computer/operating_system"
2967 | },
2968 | {
2969 | "/common/topic/alias":[
2970 | "Ubuntu-Eee",
2971 | "Ubuntu Eee"
2972 | ],
2973 | "id":"/en/easy_peasy",
2974 | "name":"EasyPeasy",
2975 | "type":"/computer/operating_system"
2976 | },
2977 | {
2978 | "/common/topic/alias":[],
2979 | "id":"/wikipedia/en_title/Robot_Operating_System",
2980 | "name":"Robot Operating System",
2981 | "type":"/computer/operating_system"
2982 | },
2983 | {
2984 | "/common/topic/alias":[],
2985 | "id":"/en/amigaos_4",
2986 | "name":"AmigaOS 4",
2987 | "type":"/computer/operating_system"
2988 | },
2989 | {
2990 | "/common/topic/alias":[
2991 | "JUNOS"
2992 | ],
2993 | "id":"/en/junos",
2994 | "name":"Junos",
2995 | "type":"/computer/operating_system"
2996 | },
2997 | {
2998 | "/common/topic/alias":[],
2999 | "id":"/m/04z_4t0",
3000 | "name":"Derrick",
3001 | "type":"/computer/operating_system"
3002 | },
3003 | {
3004 | "/common/topic/alias":[
3005 | "Kubuntu Hoary Hedgehog",
3006 | "Kubuntu Hoary"
3007 | ],
3008 | "id":"/en/kubuntu_5_04",
3009 | "name":"Kubuntu 5.04",
3010 | "type":"/computer/operating_system"
3011 | },
3012 | {
3013 | "/common/topic/alias":[
3014 | "Kubuntu Breezy Badger",
3015 | "Kubuntu Breezy"
3016 | ],
3017 | "id":"/en/kubuntu_5_10",
3018 | "name":"Kubuntu 5.10",
3019 | "type":"/computer/operating_system"
3020 | },
3021 | {
3022 | "/common/topic/alias":[
3023 | "Kubuntu Dapper",
3024 | "Kubuntu 6.06",
3025 | "Kubuntu Dapper Drake"
3026 | ],
3027 | "id":"/en/kubuntu_6_06_lts",
3028 | "name":"Kubuntu 6.06 LTS",
3029 | "type":"/computer/operating_system"
3030 | },
3031 | {
3032 | "/common/topic/alias":[
3033 | "Kubuntu Edgy",
3034 | "Kubuntu Edgy Eft"
3035 | ],
3036 | "id":"/en/kubuntu_6_10",
3037 | "name":"Kubuntu 6.10",
3038 | "type":"/computer/operating_system"
3039 | },
3040 | {
3041 | "/common/topic/alias":[
3042 | "Kubuntu Feisty Fawn",
3043 | "Kubuntu Feisty"
3044 | ],
3045 | "id":"/en/kubuntu_7_04",
3046 | "name":"Kubuntu 7.04",
3047 | "type":"/computer/operating_system"
3048 | },
3049 | {
3050 | "/common/topic/alias":[
3051 | "Kubuntu Gutsy Gibbon",
3052 | "Kubuntu Gutsy"
3053 | ],
3054 | "id":"/en/kubuntu_7_10",
3055 | "name":"Kubuntu 7.10",
3056 | "type":"/computer/operating_system"
3057 | },
3058 | {
3059 | "/common/topic/alias":[
3060 | "Kubuntu Hardy Heron",
3061 | "Kubuntu Hardy"
3062 | ],
3063 | "id":"/en/kubuntu_8_04",
3064 | "name":"Kubuntu 8.04",
3065 | "type":"/computer/operating_system"
3066 | },
3067 | {
3068 | "/common/topic/alias":[
3069 | "Kubuntu Intrepid Ibex",
3070 | "Kubuntu Intrepid"
3071 | ],
3072 | "id":"/en/kubuntu_8_10",
3073 | "name":"Kubuntu 8.10",
3074 | "type":"/computer/operating_system"
3075 | },
3076 | {
3077 | "/common/topic/alias":[
3078 | "Kubuntu Jaunty",
3079 | "Kubuntu Jaunty Jackalope"
3080 | ],
3081 | "id":"/en/kubuntu_9_04",
3082 | "name":"Kubuntu 9.04",
3083 | "type":"/computer/operating_system"
3084 | },
3085 | {
3086 | "/common/topic/alias":[],
3087 | "id":"/en/vida_linux",
3088 | "name":"Vida Linux",
3089 | "type":"/computer/operating_system"
3090 | },
3091 | {
3092 | "/common/topic/alias":[
3093 | "GOS"
3094 | ],
3095 | "id":"/wikipedia/pt_id/2703915",
3096 | "name":"gOS",
3097 | "type":"/computer/operating_system"
3098 | },
3099 | {
3100 | "/common/topic/alias":[],
3101 | "id":"/en/xandros_desktop",
3102 | "name":"Xandros Desktop",
3103 | "type":"/computer/operating_system"
3104 | },
3105 | {
3106 | "/common/topic/alias":[],
3107 | "id":"/m/052ts63",
3108 | "name":"Absolute",
3109 | "type":"/computer/operating_system"
3110 | },
3111 | {
3112 | "/common/topic/alias":[],
3113 | "id":"/wikipedia/en_title/Parted_Magic",
3114 | "name":"Parted Magic",
3115 | "type":"/computer/operating_system"
3116 | },
3117 | {
3118 | "/common/topic/alias":[],
3119 | "id":"/en/linux_gamers",
3120 | "name":"linuX-gamers",
3121 | "type":"/computer/operating_system"
3122 | },
3123 | {
3124 | "/common/topic/alias":[],
3125 | "id":"/en/whitix",
3126 | "name":"Whitix",
3127 | "type":"/computer/operating_system"
3128 | },
3129 | {
3130 | "/common/topic/alias":[
3131 | "Palm webOS",
3132 | "HP webOS"
3133 | ],
3134 | "id":"/en/palm_webos",
3135 | "name":"webOS",
3136 | "type":"/computer/operating_system"
3137 | },
3138 | {
3139 | "/common/topic/alias":[],
3140 | "id":"/en/granular_linux",
3141 | "name":"Granular Linux",
3142 | "type":"/computer/operating_system"
3143 | },
3144 | {
3145 | "/common/topic/alias":[],
3146 | "id":"/en/m_dos",
3147 | "name":"MIDAS",
3148 | "type":"/computer/operating_system"
3149 | },
3150 | {
3151 | "/common/topic/alias":[],
3152 | "id":"/en/tinix",
3153 | "name":"Tinix",
3154 | "type":"/computer/operating_system"
3155 | },
3156 | {
3157 | "/common/topic/alias":[],
3158 | "id":"/en/jari_os",
3159 | "name":"Jari OS",
3160 | "type":"/computer/operating_system"
3161 | },
3162 | {
3163 | "/common/topic/alias":[],
3164 | "id":"/m/05k5q8q",
3165 | "name":"Finder",
3166 | "type":"/computer/operating_system"
3167 | },
3168 | {
3169 | "/common/topic/alias":[],
3170 | "id":"/en/everest_linux",
3171 | "name":"EVEREST Linux",
3172 | "type":"/computer/operating_system"
3173 | },
3174 | {
3175 | "/common/topic/alias":[
3176 | "Buddhabuntu"
3177 | ],
3178 | "id":"/en/ubuntu_buddhist_remix",
3179 | "name":"Ubuntu Buddhist Remix",
3180 | "type":"/computer/operating_system"
3181 | },
3182 | {
3183 | "/common/topic/alias":[],
3184 | "id":"/en/derrick_operating_system",
3185 | "name":"Derrick Operating System",
3186 | "type":"/computer/operating_system"
3187 | },
3188 | {
3189 | "/common/topic/alias":[],
3190 | "id":"/en/windows_mobile_standard",
3191 | "name":"Windows Mobile Standard",
3192 | "type":"/computer/operating_system"
3193 | },
3194 | {
3195 | "/common/topic/alias":[],
3196 | "id":"/en/sabily",
3197 | "name":"Sabily",
3198 | "type":"/computer/operating_system"
3199 | },
3200 | {
3201 | "/common/topic/alias":[
3202 | "Windows \"Vienna\"",
3203 | "Blackcomb",
3204 | "Vienna"
3205 | ],
3206 | "id":"/en/windows_vienna",
3207 | "name":"Windows 7",
3208 | "type":"/computer/operating_system"
3209 | },
3210 | {
3211 | "/common/topic/alias":[
3212 | "Mobile Internet Experience"
3213 | ],
3214 | "id":"/en/mie_linux",
3215 | "name":"MIE Linux",
3216 | "type":"/computer/operating_system"
3217 | },
3218 | {
3219 | "/common/topic/alias":[],
3220 | "id":"/en/lubuntu",
3221 | "name":"Lubuntu",
3222 | "type":"/computer/operating_system"
3223 | },
3224 | {
3225 | "/common/topic/alias":[],
3226 | "id":"/en/google_chrome_os",
3227 | "name":"Google Chrome OS",
3228 | "type":"/computer/operating_system"
3229 | },
3230 | {
3231 | "/common/topic/alias":[],
3232 | "id":"/en/zorin_os",
3233 | "name":"Zorin OS",
3234 | "type":"/computer/operating_system"
3235 | },
3236 | {
3237 | "/common/topic/alias":[
3238 | "Central TRON"
3239 | ],
3240 | "id":"/en/ctron",
3241 | "name":"CTRON",
3242 | "type":"/computer/operating_system"
3243 | },
3244 | {
3245 | "/common/topic/alias":[],
3246 | "id":"/m/075w9nv",
3247 | "name":"Ultimate",
3248 | "type":"/computer/operating_system"
3249 | },
3250 | {
3251 | "/common/topic/alias":[
3252 | "Karmic Koala"
3253 | ],
3254 | "id":"/en/ubuntu_9_10",
3255 | "name":"Ubuntu 9.10",
3256 | "type":"/computer/operating_system"
3257 | },
3258 | {
3259 | "/common/topic/alias":[
3260 | "Lucid Linkx",
3261 | "Lucid Lynx"
3262 | ],
3263 | "id":"/en/ubuntu_10_04",
3264 | "name":"Ubuntu 10.04",
3265 | "type":"/computer/operating_system"
3266 | },
3267 | {
3268 | "/common/topic/alias":[
3269 | "Windows Mobile 7",
3270 | "Windows Phone 7 Series",
3271 | "WP7",
3272 | "WP 7",
3273 | "WP"
3274 | ],
3275 | "id":"/en/windows_phone_7",
3276 | "name":"Windows Phone",
3277 | "type":"/computer/operating_system"
3278 | },
3279 | {
3280 | "/common/topic/alias":[],
3281 | "id":"/en/ti89",
3282 | "name":"TI89",
3283 | "type":"/computer/operating_system"
3284 | },
3285 | {
3286 | "/common/topic/alias":[],
3287 | "id":"/wikipedia/es_id/3632561",
3288 | "name":"MeeGo",
3289 | "type":"/computer/operating_system"
3290 | },
3291 | {
3292 | "/common/topic/alias":[
3293 | "Symbian platform",
3294 | "Symbian OS"
3295 | ],
3296 | "id":"/en/symbian_platform",
3297 | "name":"Symbian",
3298 | "type":"/computer/operating_system"
3299 | },
3300 | {
3301 | "/common/topic/alias":[],
3302 | "id":"/m/0by064r",
3303 | "name":"Sirius RTOS",
3304 | "type":"/computer/operating_system"
3305 | },
3306 | {
3307 | "/common/topic/alias":[],
3308 | "id":"/wikipedia/en_title/Funtoo_Linux",
3309 | "name":"Funtoo Linux",
3310 | "type":"/computer/operating_system"
3311 | },
3312 | {
3313 | "/common/topic/alias":[],
3314 | "id":"/wikipedia/en_title/OpenIndiana",
3315 | "name":"OpenIndiana",
3316 | "type":"/computer/operating_system"
3317 | },
3318 | {
3319 | "/common/topic/alias":[],
3320 | "id":"/wikipedia/en_title/Mageia",
3321 | "name":"Mageia",
3322 | "type":"/computer/operating_system"
3323 | },
3324 | {
3325 | "/common/topic/alias":[],
3326 | "id":"/wikipedia/en_title/KDE_Software_Compilation",
3327 | "name":"KDE Software Compilation",
3328 | "type":"/computer/operating_system"
3329 | },
3330 | {
3331 | "/common/topic/alias":[],
3332 | "id":"/wikipedia/en_title/BlackBerry_Tablet_OS",
3333 | "name":"BlackBerry Tablet OS",
3334 | "type":"/computer/operating_system"
3335 | },
3336 | {
3337 | "/common/topic/alias":[],
3338 | "id":"/wikipedia/en_title/Mac_OS_X_Lion",
3339 | "name":"Mac OS X Lion",
3340 | "type":"/computer/operating_system"
3341 | },
3342 | {
3343 | "/common/topic/alias":[
3344 | "Chakra GNU/Linux"
3345 | ],
3346 | "id":"/wikipedia/es_id/4345491",
3347 | "name":"Chakra",
3348 | "type":"/computer/operating_system"
3349 | },
3350 | {
3351 | "/common/topic/alias":[],
3352 | "id":"/wikipedia/en_title/CP-823$002FU",
3353 | "name":"CP-823/U",
3354 | "type":"/computer/operating_system"
3355 | },
3356 | {
3357 | "/common/topic/alias":[
3358 | "Android 3.0",
3359 | "Android 3.2",
3360 | "Android 3.1"
3361 | ],
3362 | "id":"/m/0g9gc37",
3363 | "name":"Honeycomb",
3364 | "type":"/computer/operating_system"
3365 | },
3366 | {
3367 | "/common/topic/alias":[],
3368 | "id":"/m/0g9pn_f",
3369 | "name":"AD-75",
3370 | "type":"/computer/operating_system"
3371 | },
3372 | {
3373 | "/common/topic/alias":[],
3374 | "id":"/m/0g9pn_j",
3375 | "name":"RBM-1",
3376 | "type":"/computer/operating_system"
3377 | },
3378 | {
3379 | "/common/topic/alias":[],
3380 | "id":"/m/0g9pn_m",
3381 | "name":"CP-V",
3382 | "type":"/computer/operating_system"
3383 | },
3384 | {
3385 | "/common/topic/alias":[],
3386 | "id":"/wikipedia/en_title/RT-Thread",
3387 | "name":"RT-Thread",
3388 | "type":"/computer/operating_system"
3389 | },
3390 | {
3391 | "/common/topic/alias":[
3392 | "Natty Narwhal"
3393 | ],
3394 | "id":"/m/0glhw5_",
3395 | "name":"Ubuntu 11.04",
3396 | "type":"/computer/operating_system"
3397 | },
3398 | {
3399 | "/common/topic/alias":[],
3400 | "id":"/m/0gljrc7",
3401 | "name":"Kubuntu 11.04",
3402 | "type":"/computer/operating_system"
3403 | },
3404 | {
3405 | "/common/topic/alias":[],
3406 | "id":"/m/0gljrcf",
3407 | "name":"Kubuntu 10.04",
3408 | "type":"/computer/operating_system"
3409 | },
3410 | {
3411 | "/common/topic/alias":[],
3412 | "id":"/m/0gljrcm",
3413 | "name":"Kubuntu 10.10",
3414 | "type":"/computer/operating_system"
3415 | },
3416 | {
3417 | "/common/topic/alias":[
3418 | "Windows Phone 7.5",
3419 | "Windows Phone Mango"
3420 | ],
3421 | "id":"/m/0gtwkxh",
3422 | "name":"Windows Phone 7.1",
3423 | "type":"/computer/operating_system"
3424 | },
3425 | {
3426 | "/common/topic/alias":[],
3427 | "id":"/wikipedia/tr/Windows_8",
3428 | "name":"Windows 8",
3429 | "type":"/computer/operating_system"
3430 | },
3431 | {
3432 | "/common/topic/alias":[],
3433 | "id":"/wikipedia/en_title/VM$002F386",
3434 | "name":"VM/386",
3435 | "type":"/computer/operating_system"
3436 | },
3437 | {
3438 | "/common/topic/alias":[
3439 | "Protogon",
3440 | "ReFS",
3441 | "Windows Server 8"
3442 | ],
3443 | "id":"/wikipedia/en_title/Windows_Server_2012",
3444 | "name":"Windows Server 2012",
3445 | "type":"/computer/operating_system"
3446 | },
3447 | {
3448 | "/common/topic/alias":[],
3449 | "id":"/wikipedia/en_title/Pinguy_OS",
3450 | "name":"Pinguy OS",
3451 | "type":"/computer/operating_system"
3452 | },
3453 | {
3454 | "/common/topic/alias":[
3455 | "Oneiric Ocelot"
3456 | ],
3457 | "id":"/m/0gwn877",
3458 | "name":"Ubuntu 11.10",
3459 | "type":"/computer/operating_system"
3460 | },
3461 | {
3462 | "/common/topic/alias":[
3463 | "Boot 2 Gecko",
3464 | "Boot to Gecko"
3465 | ],
3466 | "id":"/wikipedia/en_title/Firefox_OS",
3467 | "name":"Firefox OS",
3468 | "type":"/computer/operating_system"
3469 | },
3470 | {
3471 | "/common/topic/alias":[],
3472 | "id":"/wikipedia/en_title/Z-DOS",
3473 | "name":"Z-DOS",
3474 | "type":"/computer/operating_system"
3475 | },
3476 | {
3477 | "/common/topic/alias":[],
3478 | "id":"/wikipedia/en_title/ISIS_$0028operating_system$0029",
3479 | "name":"ISIS",
3480 | "type":"/computer/operating_system"
3481 | },
3482 | {
3483 | "/common/topic/alias":[],
3484 | "id":"/wikipedia/en_title/Tizen",
3485 | "name":"Tizen",
3486 | "type":"/computer/operating_system"
3487 | },
3488 | {
3489 | "/common/topic/alias":[
3490 | "BBX"
3491 | ],
3492 | "id":"/wikipedia/en_title/BlackBerry_10",
3493 | "name":"BlackBerry 10",
3494 | "type":"/computer/operating_system"
3495 | },
3496 | {
3497 | "/common/topic/alias":[
3498 | "Motorola Ice Cream Sandwich",
3499 | "Android 4.0 Ice Cream Sandwich",
3500 | "ICS"
3501 | ],
3502 | "id":"/m/0hj1f77",
3503 | "name":"Ice Cream Sandwich",
3504 | "type":"/computer/operating_system"
3505 | },
3506 | {
3507 | "/common/topic/alias":[],
3508 | "id":"/wikipedia/en_title/Ubuntu_TV",
3509 | "name":"Ubuntu TV",
3510 | "type":"/computer/operating_system"
3511 | },
3512 | {
3513 | "/common/topic/alias":[],
3514 | "id":"/m/0h_jfj5",
3515 | "name":"SMSall",
3516 | "type":"/computer/operating_system"
3517 | },
3518 | {
3519 | "/common/topic/alias":[],
3520 | "id":"/wikipedia/en_title/OS_X_Mountain_Lion",
3521 | "name":"OS X Mountain Lion",
3522 | "type":"/computer/operating_system"
3523 | },
3524 | {
3525 | "/common/topic/alias":[
3526 | "Windows 8 RT"
3527 | ],
3528 | "id":"/wikipedia/en_title/Windows_RT",
3529 | "name":"Windows RT",
3530 | "type":"/computer/operating_system"
3531 | },
3532 | {
3533 | "/common/topic/alias":[],
3534 | "id":"/wikipedia/de_title/Microsoft_Windows_Phone_8",
3535 | "name":"Windows Phone 8",
3536 | "type":"/computer/operating_system"
3537 | },
3538 | {
3539 | "/common/topic/alias":[
3540 | "Jolla OS"
3541 | ],
3542 | "id":"/wikipedia/en_title/Sailfish_OS",
3543 | "name":"Sailfish OS",
3544 | "type":"/computer/operating_system"
3545 | },
3546 | {
3547 | "/common/topic/alias":[],
3548 | "id":"/wikipedia/sv_id/1709546",
3549 | "name":"Yun OS",
3550 | "type":"/computer/operating_system"
3551 | },
3552 | {
3553 | "/common/topic/alias":[
3554 | "IOS 6"
3555 | ],
3556 | "id":"/wikipedia/en_title/IOS_6",
3557 | "name":"iOS 6",
3558 | "type":"/computer/operating_system"
3559 | },
3560 | {
3561 | "/common/topic/alias":[
3562 | "Android 4.1 Jelly Bean",
3563 | "Android 4.2 Jelly Bean",
3564 | "Android Jelly Bean"
3565 | ],
3566 | "id":"/dataworld/freeq/job_0bdfebe4-1991-4e0f-ac9a-aaf1faaad0c5_var_en_wikipedia_org_wiki_Android_Jelly_Bean",
3567 | "name":"Jelly Bean",
3568 | "type":"/computer/operating_system"
3569 | },
3570 | {
3571 | "/common/topic/alias":[],
3572 | "id":"/m/0nd6nn1",
3573 | "name":"Key Lime Pie",
3574 | "type":"/computer/operating_system"
3575 | },
3576 | {
3577 | "/common/topic/alias":[],
3578 | "id":"/wikipedia/en_title/Windows_Phone_7",
3579 | "name":"Windows Phone 7",
3580 | "type":"/computer/operating_system"
3581 | },
3582 | {
3583 | "/common/topic/alias":[],
3584 | "id":"/wikipedia/en_title/Byzantium_$0028Linux_distribution$0029",
3585 | "name":"Byzantium",
3586 | "type":"/computer/operating_system"
3587 | },
3588 | {
3589 | "/common/topic/alias":[
3590 | "Ubuntu Phone"
3591 | ],
3592 | "id":"/wikipedia/fr/Ubuntu_pour_t$00E9l$00E9phones",
3593 | "name":"Ubuntu Touch",
3594 | "type":"/computer/operating_system"
3595 | },
3596 | {
3597 | "/common/topic/alias":[],
3598 | "id":"/m/0pxm30z",
3599 | "name":"Windows 7 Professional,SP1, No Media, 64-bit, English",
3600 | "type":"/computer/operating_system"
3601 | },
3602 | {
3603 | "/common/topic/alias":[],
3604 | "id":"/m/0pxm318",
3605 | "name":"Windows 7 Ultimate,SP1, No Media, 64-bit, English",
3606 | "type":"/computer/operating_system"
3607 | },
3608 | {
3609 | "/common/topic/alias":[],
3610 | "id":"/m/0pxm31l",
3611 | "name":"Windows 7 Ultimate,SP1,w XP Mode, No Media, 64-bit, English",
3612 | "type":"/computer/operating_system"
3613 | },
3614 | {
3615 | "/common/topic/alias":[],
3616 | "id":"/m/0pxm31x",
3617 | "name":"Windows 7 Professional,SP1,w XP Mode,No Media, 64-bit, English",
3618 | "type":"/computer/operating_system"
3619 | },
3620 | {
3621 | "/common/topic/alias":[],
3622 | "id":"/m/0q2ttqf",
3623 | "name":"iOS 6.1",
3624 | "type":"/computer/operating_system"
3625 | },
3626 | {
3627 | "/common/topic/alias":[],
3628 | "id":"/m/0q3y_ys",
3629 | "name":"PetrOS",
3630 | "type":"/computer/operating_system"
3631 | },
3632 | {
3633 | "/common/topic/alias":[],
3634 | "id":"/m/0qz8mnb",
3635 | "name":"Linux Enterprise",
3636 | "type":"/computer/operating_system"
3637 | },
3638 | {
3639 | "/common/topic/alias":[],
3640 | "id":"/wikipedia/en_title/Vino_$0028operating_system$0029",
3641 | "name":"Vino",
3642 | "type":"/computer/operating_system"
3643 | },
3644 | {
3645 | "/common/topic/alias":[],
3646 | "id":"/wikipedia/en_title/Nokia_Asha_platform",
3647 | "name":"Nokia Asha platform",
3648 | "type":"/computer/operating_system"
3649 | },
3650 | {
3651 | "/common/topic/alias":[
3652 | "Aprendiendo de Jes\u00fas"
3653 | ],
3654 | "id":"/wikipedia/en_title/AdJ",
3655 | "name":"AdJ",
3656 | "type":"/computer/operating_system"
3657 | },
3658 | {
3659 | "/common/topic/alias":[],
3660 | "id":"/wikipedia/en_title/IOS_7",
3661 | "name":"iOS 7",
3662 | "type":"/computer/operating_system"
3663 | },
3664 | {
3665 | "/common/topic/alias":[],
3666 | "id":"/dataworld/freeq/job_dcd9f76a-37dd-4fea-839a-12667be6999b_var_en_wikipedia_org_wiki_AriOS_$0028operating_system$0029",
3667 | "name":"AriOS",
3668 | "type":"/computer/operating_system"
3669 | },
3670 | {
3671 | "/common/topic/alias":[],
3672 | "id":"/dataworld/freeq/job_d93ac31a-6a7c-486e-8031-9d4d01eda818_var_en_wikipedia_org_wiki_SteamOS",
3673 | "name":"SteamOS",
3674 | "type":"/computer/operating_system"
3675 | },
3676 | {
3677 | "/common/topic/alias":[],
3678 | "id":"/dataworld/freeq/job_b0d7a067-facc-4e55-b4dd-7b70bf896a60_var_en_wikipedia_org_wiki_Chitwanix_OS",
3679 | "name":"Chitwanix OS",
3680 | "type":"/computer/operating_system"
3681 | },
3682 | {
3683 | "/common/topic/alias":[],
3684 | "id":"/dataworld/freeq/job_b0a54d8c-dd03-4d3b-b32d-112bad0f98b5_var_en_wikipedia_org_wiki_Windows_8_1",
3685 | "name":"Windows 8.1",
3686 | "type":"/computer/operating_system"
3687 | },
3688 | {
3689 | "/common/topic/alias":[
3690 | "Dell Solutions for Windows Migration and PC Deployment"
3691 | ],
3692 | "id":"/m/0zjl56b",
3693 | "name":"Windows 8-Dell Solutions for Windows Migration and PC Deployment",
3694 | "type":"/computer/operating_system"
3695 | },
3696 | {
3697 | "/common/topic/alias":[],
3698 | "id":"/dataworld/freeq/job_0639d072-afff-4aa5-9efd-7f111e4f4ea1_var_en_wikipedia_org_wiki_Tuk",
3699 | "name":"Tuk",
3700 | "type":"/computer/operating_system"
3701 | },
3702 | {
3703 | "/common/topic/alias":[],
3704 | "id":"/dataworld/freeq/job_7fd43a7b-9c7c-4e74-b2fc-d907ccbd7435_var_en_wikipedia_org_wiki_Meltemi_$0028operating_system$0029",
3705 | "name":"Meltemi",
3706 | "type":"/computer/operating_system"
3707 | },
3708 | {
3709 | "/common/topic/alias":[],
3710 | "id":"/m/0_vxlwy",
3711 | "name":"iPhone OS",
3712 | "type":"/computer/operating_system"
3713 | },
3714 | {
3715 | "/common/topic/alias":[],
3716 | "id":"/en/cubuntu",
3717 | "name":"Cubuntu",
3718 | "type":"/computer/operating_system"
3719 | },
3720 | {
3721 | "/common/topic/alias":[
3722 | "Trusty Tahr",
3723 | "Ubuntu 14.04"
3724 | ],
3725 | "id":"/m/0109jz3d",
3726 | "name":"Ubuntu 14.04 LTS",
3727 | "type":"/computer/operating_system"
3728 | },
3729 | {
3730 | "/common/topic/alias":[
3731 | "iOS 8"
3732 | ],
3733 | "id":"/dataworld/freeq/job_801a7f7c-419a-49c8-8ef2-661da18ce98a_var_en_wikipedia_org_wiki_IOS_8",
3734 | "name":"iOS 8",
3735 | "type":"/computer/operating_system"
3736 | },
3737 | {
3738 | "/common/topic/alias":[],
3739 | "id":"/dataworld/freeq/job_801a7f7c-419a-49c8-8ef2-661da18ce98a_var_en_wikipedia_org_wiki_Synaptop",
3740 | "name":"Synaptop",
3741 | "type":"/computer/operating_system"
3742 | },
3743 | {
3744 | "/common/topic/alias":[],
3745 | "id":"/dataworld/freeq/job_7c0715be-1724-41bf-98de-b71e36cc3777_var_en_wikipedia_org_wiki_OS_X_10_10",
3746 | "name":"OS X Yosemite",
3747 | "type":"/computer/operating_system"
3748 | },
3749 | {
3750 | "/common/topic/alias":[],
3751 | "id":"/dataworld/freeq/job_4ea5aeaf-1152-42ce-a752-e56f76310da0_var_en_wikipedia_org_wiki_Android_L",
3752 | "name":"Android L",
3753 | "type":"/computer/operating_system"
3754 | },
3755 | {
3756 | "/common/topic/alias":[],
3757 | "id":"/m/01146mng",
3758 | "name":"Firefox OS V1.1",
3759 | "type":"/computer/operating_system"
3760 | }
3761 | ]
3762 | }
--------------------------------------------------------------------------------