Пустые поля в классе при разборе онтологии 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));
}
Другие вопросы по тегам