Создатель правила Protege SWRL говорит: "Неожиданный персонаж"; имя класса содержит пробел
На вкладке SWRL в Protege я пытаюсь написать правило, но я могу сделать это только с классами, в которых нет пробелов. Например, в моей онтологии есть класс "equipment", поэтому я могу сделать это без ошибок:
equipment(?x)
У меня также есть класс под названием "станок". Поскольку этот класс является пробелом в своем имени, он говорит "Недопустимый предикат атома SWRL 'machine'", когда я делаю это:
machine tool(?x)
Я попытался использовать подчеркивание вместо пробела, но это не сработало. Я также попытался поместить станок и кавычки следующим образом, но затем он говорит: "Неожиданный символ":
'machine tool'(?x)
Как мне обратиться к классу, если в имени класса есть пробел? Можно ли как-то ссылаться на него с помощью URI?
2 ответа
ОК, я понял это. Мне пришлось обновить плагин SWRLTab в Protege, а затем я мог ссылаться на класс по его URI следующим образом:
msdl:MSDL_0000070(?x)
machine tool
это не имя класса в вашей онтологии, это значение свойства rdfs:label (или rdfs:comment), прикрепленного к классу. Редактор не позволяет вам использовать это (что было бы удобно, я думаю). Обходной путь - найти фактический IRI класса и использовать его, сокращенный до его QName, если это работает.