У меня вопрос: этого достаточно?
Достаточно просто добавить экземпляр класса в RDF. В RDF ресурсы могут быть членами классов, и это представлено тройкой со свойством rdf:type.
Я спрашиваю об этом, потому что я добавил несколько человек в файл owl с помощью protege и увидел, что в файл добавлена еще одна тройка:
indv:individual_name rdf:type owl:NamedIndividual.
Эту тройку надо вставлять и в магазин тройки? Каковы преимущества вставки этой тройки или есть какие-то недостатки?
OWL более структурирован, чем RDF. OWL на самом деле является логическим языком, основанным на аксиомах и утверждениях. Он по-прежнему использует IRI в качестве идентификаторов, и разработчики позаботились о поддержке сериализации онтологий OWL в RDF. Итак, вы фактически работаете с сериализацией онтологии OWL в RDF. В общем, вы можете найти официальный документ, Язык веб-онтологий OWL 2 Сопоставление с графиками RDF, полезно.
То, что вы видите в выводе Protege, на самом деле представляет собой сериализацию двух аксиом OWL. В OWL вы можете объявить индивидуума без указания каких-либо классов, членом которых он является. Вы делаете это с помощью аксиомы вроде (копирование из документации, указанной выше):
Декларация( NamedIndividual( *:a ))
Это переводится в RDF как тройка:
T(*:a) rdf:type owl:NamedIndividual .
Обозначение T(*:a) просто означает, что каким бы ни был перевод *:a, это предмет тройки. Таким образом, тройка «x rdf:type owl:NamedIndividual» — это то, что на самом деле отвечает за утверждение, что «x — это физическое лицо». То есть, чтобы объявить, что что-то является физическим лицом, вы должны просто сделать:
INSERT DATA { indv:individual_name rdf:type owl:NamedIndivual }
А как насчет добавления еще одного типа (как в оригинальном обновлении SPARQL)? В OWL вы говорите, что «a» является членом некоторого класса, обозначаемого выражением класса «CE», с помощью этой аксиомы:
Утверждение класса (CE a)
Это переведено в RDF как
T(a) rdf:тип T(CE) .
Обозначения T(a) и T(CE) просто указывают на то, что представление «a» и «CE» в RDF может быть более сложным, чем простой IRI, пустой узел или литерал. Например, выражением класса может быть unionOf, crossOf и т. д. Итак, если вы хотите добавить аксиому утверждения класса, вы должны использовать обновление SPARQL, например:
INSERT DATA {
indv:individual_name rdf:type ont:SomeClassName.
}
Конечно, вы должны делать это только в том случае, если вы действительно объявили человека (хотя вы обнаружите, что на практике это не всегда выполняется). Итак, в целом, вы, вероятно, хотите такое обновление:
INSERT DATA {
indv:individual_name rdf:type ont:SomeClassName, owl:NamedIndividual
}
Это (i) объявляет человека и (ii) утверждает, что человек является членом определенного класса.
person
Joshua Taylor
schedule
07.07.2015