static void Main(string[] args) { using (StreamReader file = File.OpenText(@"..\icu.json")) { JsonSerializer serializer = new JsonSerializer(); Json json = (Json)serializer.Deserialize(file, typeof(Json)); Console.WriteLine("icu.json:" + json.units.Count); var units = new List <Unitdef>(); var comu = new StreamWriter(@"Unit2.rdf", false, Encoding.UTF8); var member = new StreamWriter(@"Member.rdf", false, Encoding.UTF8); var alter = new StreamWriter(@"Alter.rdf", false, Encoding.UTF8); var xmlns = new StreamReader(@"xmlns.txt", Encoding.UTF8); comu.WriteLine(xmlns.ReadToEnd()); xmlns.Close(); using (WebClient webclient = new WebClient()) { webclient.Encoding = Encoding.UTF8; foreach (var i in json.units) { var unit = new Unitdef(i.uname, i.ids); if (units.Contains(unit)) { continue; } if (sparqling(webclient, i.uname)) { if (nameSame(webclient, member, ref units, unit, json.idols) || memberSame(webclient, alter, ref units, unit, json.idols)) { continue; } //書込み Console.WriteLine(i.uname + ":" + i.uid); comu.WriteLine("<rdf:Description rdf:about=\"detail/" + URIencoding(i.uname) + "\">"); comu.WriteLine("<schema:name rdf:datatype=\"https://www.w3.org/TR/xmlschema11-2/#string\">" + i.uname.Replace("&", "&") + "</schema:name>"); foreach (var j in i.ids) { sparqling(webclient, json.idols, j, comu); } comu.WriteLine("<rdf:type rdf:resource=\"https://sparql.crssnky.xyz/imasrdf/URIs/imas-schema.ttl#Unit\"/>"); comu.WriteLine("</rdf:Description>"); units.Add(unit); } } } comu.WriteLine("</rdf:RDF>"); member.Close(); alter.Close(); comu.Close(); } }
static bool nameSame(WebClient web, StreamWriter writer, ref List <Unitdef> units, Unitdef unit, List <Idol> idols) { foreach (var i in units) { if (i.name == unit.name) { foreach (var j in unit.idols) { if (!i.idols.Contains(j)) { var download = web.DownloadString("https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3a%20%3chttp%3a%2f%2fschema%2eorg%2f%3e%0d%0aSELECT%20%3fs%20%0d%0aWHERE%20%7b%0d%0a%20%20%3fs%20schema%3aname%20%22" + idols[j - 1].name + "%22%40ja%3b%0d%0a%7d"); var xml = new XmlDocument(); xml.LoadXml(download); writer.WriteLine("<!--" + unit.name + "-->"); writer.WriteLine("<schema:member rdf:resource=\"" + xml.ChildNodes[1].ChildNodes[1].InnerText + "\"/>"); i.idols.Add(j); } } return(true); } } return(false); }
static bool memberSame(WebClient web, StreamWriter writer, ref List <Unitdef> units, Unitdef unit, List <Idol> idols) { //ここ foreach (var i in units) { if (i.idols.Count == unit.idols.Count) { i.idols.Sort(); unit.idols.Sort(); if (i.idols.Equals(unit.idols)) { writer.WriteLine("<!--" + i.name + "-->"); writer.WriteLine("<schema:alternateName rdf:datatype=\"https://www.w3.org/TR/xmlschema11-2/#string\">" + unit.name.Replace("&", "&") + "</schema:alternateName>"); units.Add(unit); return(true); } } } //SPARQL var member = ""; var que = new string[] { "https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3a%20%3chttp%3a%2f%2fschema%2eorg%2f%3ePREFIX%20rdf%3a%20%3chttp%3a%2f%2fwww%2ew3%2eorg%2f1999%2f02%2f22%2drdf%2dsyntax%2dns%23%3ePREFIX%20imas%3a%20%3chttps%3a%2f%2fsparql%2ecrssnky%2exyz%2fimasrdf%2fURIs%2fimas%2dschema%2ettl%23%3eSELECT%20%3fname%20WHERE%20%7b%20%20%3fs%20rdf%3atype%20imas%3aUnit%3bschema%3aname%20%3fname%3bschema%3amember%20", "%3bschema%3amember%20%3fm%2e%7dgroup%20by%20%3fname%20having%28count%28%3fm%29%3d", "%29" }; foreach (var i in unit.idols) { var download2 = web.DownloadString("https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3a%20%3chttp%3a%2f%2fschema%2eorg%2f%3e%0d%0aSELECT%20%3fs%20%0d%0aWHERE%20%7b%0d%0a%20%20%3fs%20schema%3aname%20%22" + idols[i - 1].name + "%22%40ja%3b%0d%0a%7d"); var xml2 = new XmlDocument(); xml2.LoadXml(download2); member += "<" + xml2.ChildNodes[1].ChildNodes[1].InnerText + ">,"; } member = member.Substring(0, member.Length - 1); var query = que[0] + member + que[1] + unit.idols.Count + que[2]; var download = web.DownloadString(query); var xml = new XmlDocument(); xml.LoadXml(download); if (xml.ChildNodes[1].ChildNodes[1].InnerText != "") { writer.WriteLine("<!--" + xml.ChildNodes[1].ChildNodes[1].InnerText + "-->"); writer.WriteLine("<schema:alternateName rdf:datatype=\"https://www.w3.org/TR/xmlschema11-2/#string\">" + unit.name.Replace("&", "&") + "</schema:alternateName>"); units.Add(unit); return(true); } return(false); }