2009-07-13 20 views
1

En ce qui concerne mon previous post, maintenant, quand je teste, en progFields ci-dessous:Obtenez les individus d'une classe d'ontologie en .Net

System.Reflection.FieldInfo[] progFields = typeof(Program).GetFields(); 

ne retourne rien. Mon ontologie sur le programme est comme ceci:

<owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program"> 
     <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Rank"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/> 
     <owl:disjointWith> 
      <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#LearningResource"/> 
     </owl:disjointWith> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ResourceAuthor"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Note"/> 
     <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ClassOfCourse"/> 
     <rdfs:subClassOf> 
      <owl:Restriction> 
       <owl:onProperty> 
        <owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade"/> 
       </owl:onProperty> 
       <owl:allValuesFrom rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/> 
      </owl:Restriction> 
     </rdfs:subClassOf> 
     <owl:disjointWith> 
      <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/> 
     </owl:disjointWith> 

et à la fin du fichier, sa collection est définie:

<owl:AllDifferent> 
     <owl:distinctMembers rdf:parseType="Collection"> 
      <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Information_Technology"/> 
      <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Software"/> 
      <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Management"/> 
      <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Literature"/> 
     </owl:distinctMembers> 
    </owl:AllDifferent> 

L'ontologie a été faite par Protege. Pourriez-vous aider s'il vous plaît dans la situation

Répondre

3

Vous obtenez zéro champs parce que votre classe de programme n'est pas un enumerated OWL class.

Le problème fondamental est que votre ontologie exprime ce que le programme n'est PAS, au lieu de dire ce qu'il est. Ce n'est pas faux, mais pas ce que vous voulez. Je suis un humain, je peux comprendre ce que vous vouliez (à savoir que vous avez 4 et seulement 4 programmes et ils sont tous différents), mais votre ontologie ne dit pas que. Ce que votre ontologie dit est la suivante:

  • Il existe des programmes.
  • Si un individu s'avère être un programme, ce n'est sûrement pas un étudiant, un enseignant, etc.
  • Les programmes ont toujours la propriété atGrade.
  • S'il se trouve qu'ils sont IT, SW, Mgmt ou Literature, ils ne sont pas identiques.

Mais vous pourriez avoir beaucoup d'autres individus, non seulement IT, SW, Mgmt, et la littérature. Par conséquent, ROWLEX n'expose pas la classe Program en tant que classe enum. ROWLEX génèrera des champs statiques si votre classe Program est vraie