I have the following RDF schema files:

<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#";>]>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
  xml:base="http://www.people.lu.unisi.ch/fornaran/schemas/ocean-rdf0";>

<rdfs:Class rdf:ID="Event">
<rdfs:subClassOf rdf:resource="http://www.w3c.org/TR/1999/PR-rdf-schema-19990303#Resource "/>
</rdfs:Class>

<rdfs:Class rdf:ID="TimeEvent">
  <rdfs:subClassOf rdf:resource="#Event"/>
</rdfs:Class>

<rdf:Property rdf:ID="atTime">
  <rdfs:domain rdf:resource="#Event"/>
</rdf:Property>

<rdfs:Class rdf:ID="Action">
  <rdfs:subClassOf rdf:resource="#Event"/>
  <rdfs:comment>This describes the set of actions</rdfs:comment>
</rdfs:Class>

<rdfs:Class rdf:ID="Agent">
<rdfs:subClassOf rdf:resource="http://www.w3c.org/TR/1999/PR-rdf-schema-19990303#Resource "/>
</rdfs:Class>

<rdf:Property rdf:ID="hasActor">
  <rdfs:domain rdf:resource="#Action"/>
  <rdfs:range rdf:resource="#Agent"/>
</rdf:Property>

<rdf:Property rdf:ID="hasDeadline">
  <rdfs:domain rdf:resource="#Action"/>
</rdf:Property>

<rdf:Property rdf:ID="hasDuration">
  <rdfs:domain rdf:resource="#Action"/>
</rdf:Property>

</rdf:RDF>





<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#";>]>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
xmlns:ocean="http://www.people.lu.unisi.ch/fornaran/schemas/ocean-rdf0# "
  xml:base="http://www.people.lu.unisi.ch/fornaran/schemas/app";>

<rdfs:Class rdf:ID="Pay">
  <rdfs:subClassOf rdf:resource="ocean:Action"/>
</rdfs:Class>

<rdf:Property rdf:ID="hasAmount">
  <rdfs:domain rdf:resource="ocean:Pay"/>
</rdf:Property>

<rdfs:Class rdf:ID="Deliver">
  <rdfs:subClassOf rdf:resource="ocean:Action"/>
</rdfs:Class>

<rdf:Property rdf:ID="hasRecipient">
  <rdfs:domain rdf:resource="ocean:Deliver"/>
  <rdfs:domain rdf:resource="ocean:Pay"/>
</rdf:Property>

<rdf:Property rdf:ID="hasObject">
  <rdfs:domain rdf:resource="ocean:Deliver"/>
</rdf:Property>

</rdf:RDF>




the following instance file where i have included the misstake <app:hasAmounty>5</app:hasAmounty> hasAmounty is defined nowhere:

<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#";>]>
<rdf:RDF    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
xmlns:ocean="http://www.people.lu.unisi.ch/fornaran/schemas/ocean-rdf0# " xmlns:app="http://www.people.lu.unisi.ch/fornaran/schemas/app-rdf0# " xml:base="http://www.people.lu.unisi.ch/fornaran/example/promise ">

  <app:Pay rdf:ID="JohnAction1">
       <ocean:hasActor>John</ocean:hasActor>
       <ocean:hasDuration>2</ocean:hasDuration>
       <app:hasRecipient>Mary</app:hasRecipient>
       <app:hasAmount>5</app:hasAmount>
       <app:hasAmounty>5</app:hasAmounty>
  </app:Pay>

  <app:Deliver rdf:ID="MaryAction1">
       <ocean:hasActor>Mary</ocean:hasActor>
       <app:hasRecipient>John</app:hasRecipient>
       <app:hasObject rdf:resource="#book1"></app:hasObject>
  </app:Deliver>

  <app:book rdf:ID="book1"></app:book>

</rdf:RDF>


I don't understand why the validation do not raise an error.

here is my code

/ create an empty model
Model modelschema = FileManager.get().loadModel(modelschemafilename); Model modelschema2 = FileManager.get().loadModel(modelschemafilename2);
        modelschema.add(modelschema2);
        Model model = FileManager.get().loadModel(modelfilename);


InfModel inf = ModelFactory.createRDFSModel(modelschema, model);
        ValidityReport vrpt = inf.validate();


        System.out.println("is valid: " + vrpt.isValid());
        System.out.println("is clean: " + vrpt.isClean());
        Iterator<Report> itrpt = vrpt.getReports();

        while(itrpt.hasNext()) {
                Report rpt =  itrpt.next();
                rpt.toString();
        }


And the answer is always:


is valid: true
is clean: true


Can anyone give a hand here ?

Reply via email to