Вопрос

Я создаю сборку из своей онтологии OWL, но при анализе онтологии она выдает сообщение об ошибке в "свойствах типа данных", где объявлен тип и заданы некоторые значения.Я написал свою онтологию с помощью Protege версии v3.4.

Например, одним из свойств типа данных, вызывающих ошибку, является "Language" с типом "string" и значениями типа "Английский и фарси".Ссылки, приведенные ниже, сделаны protege:

<rdf:RDF xml:base="http://www.owl-ontologies.com/Ontology1243411901.owl"
xmlns="http://www.owl-ontologies.com/Ontology1243411901.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#" 
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#">

А свойство "Language" упомянуто ниже:

<owl:DatatypeProperty rdf:ID="language">
        <rdfs:range>
            <owl:DataRange>
                <owl:oneOf rdf:parseType="Resource">
                    <rdf:rest rdf:parseType="Resource">
                        <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                        <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Farsi</rdf:first>
                    </rdf:rest>
                    <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</rdf:first>
                </owl:oneOf>
            </owl:DataRange>
        </rdfs:range>
        <rdfs:domain>
            <owl:Class>
                <owl:unionOf rdf:parseType="Collection">
                    <owl:Class rdf:about="#Teacher"/>
                    <owl:Class rdf:about="#ClassOfCourse"/>
                    <owl:Class rdf:about="#LearningResource"/>
                    <owl:Class rdf:about="#Discussion"/>
                    <owl:Class rdf:about="#Student"/>
                </owl:unionOf>
            </owl:Class>
        </rdfs:domain>
    </owl:DatatypeProperty>

Я просто добавляю одну онтологию в OWLGrinder.Эта ошибка возникает при генерации:

Assembly generation failed. 
OWL property 'http://www.owl-ontologies.com/Ontology1243411901.owl#language' has a range declaration that points to _:bnode10579059 but its definition is missing. 
Are you missing an ontology which declares this class?

Число перед "_: bnode" меняется каждый раз, когда я нажимаю кнопку "Сгенерировать".При удалении значений из свойства "Language" возникает другая ошибка, связанная со следующим свойством типа данных.Это означает, что каждое определенное свойство типа данных (и для него заданы некоторые значения) выдает ошибку в OWLGrinder.

Мне было интересно, может ли кто-нибудь помочь мне устранить эту ошибку.

Это было полезно?

Решение

В настоящее время РОУЛЕКС OwlGrinder ожидает, что диапазон будет литеральным или обычным классом.Я рекомендую создать класс-оболочку 'LanguageList', который содержит ваше перечисление внутри, назначьте это как диапазон.Я не тестировал это, но я ожидаю, что это сработает.

Другие советы

Я не знаком с OWLGrinder, но вы можете попробовать объявить именованный класс, например ExpectedLanguages (дайте вашему анонимному узлу URI), а затем используйте это как диапазон для вашего language сказуемое.Сокращенный пример (в Черепаха формат):

:ExpectedLanguages
    a owl:DataRange ;
    owl:oneOf (
        "Farsi"^^xsd:string
        "English"^^xsd:string
    );
.

:languages
    rdfs:range :ExpectedLanguages ;
.

Ваше использование Перечисляемый тип данных OWL требуется, чтобы ваш код / анализатор / рассуждатель как минимум соответствовал OWL-DL.

Причина в том, что _:bnodeXXX (пустой узел / анонимный узел) каждый раз имеет новый идентификатор, потому что он пустой.Однако для целей идентификации его в графе RDF (модели) в памяти необходимо сгенерировать идентификатор для каждого анонимного узла при его загрузке, чтобы во время анализа модели каждый узел (анонимный или именованный) мог быть однозначно идентифицирован, чтобы можно было идентифицировать его входящие и исходящие ссылки.

Интеллектуальное измерение предоставляет SDK, который может конвертировать OWL-Lite, OWL-Full или OWL-DL в .Классы NET.Возможно, вы захотите взглянуть на это.

Побочное примечание
Я думаю, вы путаете семантику домена в своей онтологии.Похоже, вы пытаетесь сказать, что "Язык может существовать только для Teacher, ClassOfCourse, LearningResource, Discussion, Student", когда на самом деле вы говорите "Если язык используется для описания экземпляра, можно предположить, что этот экземпляр является объединением Teacher, ClassOfCourse, LearningResource, Discussion и Student"..Это распространенное неправильное толкование семантики OWL, поскольку кажется, что домен должен ограничивать использование свойств, когда на самом деле это никогда не является функцией OWL (схема / проверка).OWL используется только для описания того, что должно быть выведено из использования, он не предписывает использование.

Семантика домена описана в руководстве OWL.

Используя UnionOf в области языкового свойства, вы говорите, что "Все, что описывается с помощью языкового свойства, является Преподавателем, или классным курсом, или Учебным ресурсом, или Дискуссией, или Студентом".Я бы сказал, что обычно это не имеет смысла.

Объединение семантики описано в руководстве OWL.

Range аналогичен в том смысле, что если вы определяете диапазон свойства как относящийся к определенному типу, то можно сделать вывод, что все литералы / ресурсы, на которые ссылается это свойство, имеют тип, определенный в объявлении range.

Ассортимент описан в руководстве OWL.

Я скопировал / вставил вашу онтологию в http://www.mygrid.org.uk/OWL/Validator:в нем говорится, что эта онтология (по крайней мере) не является онтологией OWL-lite.Это может быть проблемой для конфигурации вашего протеже?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top