Pergunta

Estou construindo uma montagem do meu OWL ontologia, mas ao analisar a ontologia, ele levanta uma mensagem de erro em "tipo de dados propriedades", onde um tipo é declarado e alguns valores são dadas. Eu escrevi a minha ontologia usando Protege v3.4.

Por exemplo, uma das propriedades de tipo de dados que gera erro é "Idioma" com o tipo "string" e os valores como "Inglês & Farsi". As referências estão listados abaixo, feita pelo protegido:

<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#">

E a propriedade "Idioma" é mencionado abaixo:

<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>

Eu só acrescentar uma ontologia para OWLGrinder. Este erro é feito quando a geração:

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?

O número na frente de "_: bnode" muda cada vez que pressione o botão "Gerar". Ao excluir os valores da propriedade "Language", outro erro acontece relacionada com a próxima propriedade DataType. Isso significa que cada propriedade DataType que é definido (e ter alguns valores especificados a ele) está fazendo erro no OWLGrinder.

Eu queria saber se alguém poderia me guiar na handeling este erro.

Foi útil?

Solução

ROWLEX OwlGrinder espera que o intervalo para ser um literal ou uma classe regular. Eu recomendo para criar uma classe wrapper 'LanguageList' que contém a sua enumeração dentro atribuir esse como um intervalo. Eu não testei isso, mas eu esperar que ele funcione.

Outras dicas

Eu não estou familiarizado com OWLGrinder, mas você pode tentar declarar uma classe chamada como ExpectedLanguages (dar o seu nó anônimo um URI) e depois usar isso como o intervalo para o seu predicado language. Um exemplo abreviado (em Turtle formato):

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

:languages
    rdfs:range :ExpectedLanguages ;
.

O uso do OWL enumerado tipo de dados exige que o seu código / parser / reasoner ser compliant OWL-DL, no mínimo.

A razão da _:bnodeXXX (em branco nó / nó anônimo) tem um novo ID cada vez que é porque ele está em branco. No entanto, para os fins de identificação de que dentro de um gráfico de RDF (modelo) na memória, uma identificação precisa de ser gerado para cada nó anónimos quando é carregado por isso, enquanto o modelo está a ser analisado cada nó (anónimo ou chamado) pode ser identificada exclusivamente por isso suas referências de entrada e saída podem ser identificados.

Intellidimension fornece um SDK que pode converter OWL-Lite, OWL-Full, ou OWL-DL para classes de .NET. Você pode querer dar uma olhada nisso.

Sidenote
Eu acho que você está confundindo a semântica do domínio na sua ontologia. Parece que você está tentando dizer que "A linguagem só pode existir em Mestre, ClassOfCourse, LearningResource, Discussão, Student", quando na verdade você está dizendo: "Se a linguagem é usada para descrever uma instância que instância pode ser inferida a ser o Mestre UnionOf , ClassOfCourse, LearningResource, Discussão e Student. ". Esta é uma má interpretação comum da semântica da OWL como ela se sente como de domínio deve ser a restrição de propriedades usar quando na realidade isso não é sempre a função de OWL (schema / validação). OWL é usado apenas para descrever o que deve ser inferida pelo uso, não faz uso de prescrever.

semântica domínio descrito no guia de OWL.

Ao usar UnionOf no domínio da propriedade idioma que você está dizendo que "Tudo o que é descrito usando a propriedade linguagem é um professor, ou um ClassOfCourse, ou um LearningResource, ou uma discussão, ou um estudante". Eu diria que isso normalmente não é significativa.

UnionOf semântica descrito no guia de OWL.

Gama é semelhante no que se você definir o intervalo de uma propriedade a ser de um tipo específico do que pode-se inferir que todas as literais / recursos que são referidos por essa propriedade são do tipo definido com a declaração de gama.

Faixa descrito no guia de OWL.

I cópia já / colado sua ontologia em http://www.mygrid.org. uk / OWL / Validador : ele diz que essa ontologia é (pelo menos) não é uma ontologia OWL-lite. Pode ser um problema para sua configuração Protege?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top