Пустые поля в классе при разборе онтологии Protege с помощью DotNetRDF
Всем добрый день. Я пишу код, как в примере в учебнике:
Space = new OntologyGraph();
FileLoader.Load(Space, "C:/Users/Serega/Desktop/MAS/SpaceWorld.owl");
OntologyClass Spacemans = Space.CreateOntologyClass(new Uri("C:/Users/Serega/Desktop/MAS/SpaceWorld/Spaceman"));
И, наконец, в "Space" я получаю все поля, которым присвоены значения NULL, но когда я нажимаю "View Results" в "Space" в Visual Studio, я вижу правильные данные OWL в правильных полях. Что я делаю не так или не понимаю?
Затем, если я попытаюсь получить данные из "Космоса":
OntologyClass Spacemans = Space.CreateOntologyClass(Space.CreateUriNode("owl:Spaceman"));
"Spacemans" присвоил нулевое значение, а данные в ResultView отсутствуют.
1 ответ
Скорее всего, вы не просматриваете URI, которые на самом деле находятся в ваших данных, но, поскольку вы не показали свои данные, мы можем только догадываться об этом.
Во-первых, вы ищете URI C:/Users/Serega/Desktop/MAS/SpaceWorld/Spaceman
в ваших данных, которые почти наверняка не существуют в ваших данных (но вы не показали это, поэтому мы не можем сказать наверняка)
Во-вторых, вы ищете префикс имени owl:Spaceman
, Это будет расширено до URI путем объединения пространства имен для owl
который скорее всего будет http://www.w3.org/2002/07/owl#
(но вы не видели ваши данные, поэтому мы не можем быть уверены) с Spaceman
это означает, что вы ищете URI http://www.w3.org/2002/07/owl#Spaceman
что опять же, вероятно, не в ваших данных.
Попробуйте сбросить данные, чтобы увидеть, какие URI на самом деле находятся в них:
NTriplesFormatter formatter = new NTriplesFormatter();
foreach (Triple t in Space.Triples)
{
Console.WriteLine(t.ToString(formatter));
}