Mentions légales du service

Skip to content
Snippets Groups Projects
Commit c2dd64d5 authored by Jérôme Euzenat's avatar Jérôme Euzenat
Browse files

- penultimate version of tutorial4

parent c89c10b8
No related branches found
No related tags found
No related merge requests found
...@@ -418,28 +418,24 @@ public class MyApp { ...@@ -418,28 +418,24 @@ public class MyApp {
model.loadImports(); model.loadImports();
// Not better // Not better
//InputStream in = com.hp.hpl.jena.util.FileManager.get().open( merged.getPath() ); InputStream in = com.hp.hpl.jena.util.FileManager.get().open( merged.getPath() );
InputStream in = com.hp.hpl.jena.util.FileManager.get().open( "toto.owl" );
model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM_RULE_INF, null ); model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM_RULE_INF, null );
OntDocumentManager odm = model.getDocumentManager(); OntDocumentManager odm = model.getDocumentManager();
FileManager fm = odm.getFileManager(); FileManager fm = odm.getFileManager();
//model.read( in, "file:"+merged.getPath() ); model.read( in, "file:"+merged.getPath() );
model.read( in, "file:toto.owl" );
model.loadImports(); model.loadImports();
// Neither
odm = new OntDocumentManager(); odm = new OntDocumentManager();
OntModelSpec s = new OntModelSpec( OntModelSpec.OWL_DL_MEM_RULE_INF ); OntModelSpec s = new OntModelSpec( OntModelSpec.OWL_DL_MEM_RULE_INF );
s.setDocumentManager( odm ); s.setDocumentManager( odm );
odm.setProcessImports( true ); odm.setProcessImports( true );
OntModel mm = ModelFactory.createOntologyModel( s ); model = ModelFactory.createOntologyModel( s );
mm.read( FileManager.get().open( "toto.owl"), "file:toto.owl" ); model.read( FileManager.get().open( merged.getPath() ), "file:"+merged.getPath() );
System.out.println( "NB Modles= "+mm.countSubModels()+" ~~ "+mm.hasLoadedImport( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl" )); System.out.println( "NB Modles= "+model.countSubModels()+" ~~ "+model.hasLoadedImport( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl" ));
mm.loadImports(); model.loadImports();
System.out.println( "NB Modles= "+mm.countSubModels()+" ~~ "+mm.hasLoadedImport( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl" ));
OntModel mmm = mm.getImportedModel( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl" ); OntClass cl = model.getOntClass( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#Estudiante" ) ;
System.out.println( "NB Modles= "+mmm.countSubModels()+" ~~ "+mmm.hasLoadedImport( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl" ));
OntClass cl = mmm.getOntClass( "http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#Estudiante" ) ;
if ( cl != null ) { if ( cl != null ) {
System.err.println( "Class found" ); System.err.println( "Class found" );
com.hp.hpl.jena.util.iterator.ExtendedIterator<? extends com.hp.hpl.jena.ontology.OntResource> it = cl.listInstances(); com.hp.hpl.jena.util.iterator.ExtendedIterator<? extends com.hp.hpl.jena.ontology.OntResource> it = cl.listInstances();
...@@ -451,7 +447,6 @@ public class MyApp { ...@@ -451,7 +447,6 @@ public class MyApp {
} }
in.close(); in.close();
displayQueryAnswer( model, QueryFactory.read( "file:query.sparql" ) ); displayQueryAnswer( model, QueryFactory.read( "file:query.sparql" ) );
displayQueryAnswer( mmm, QueryFactory.read( "file:query.sparql" ) );
} catch (FileNotFoundException fnfe) { } catch (FileNotFoundException fnfe) {
fnfe.printStackTrace(); fnfe.printStackTrace();
} catch (IOException ioe) { } catch (IOException ioe) {
......
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns="http://knowledgeweb.semanticweb.org/heterogeneity/alignment"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<Alignment>
<xml>yes</xml>
<level>0</level>
<type>??</type>
<onto1>http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl</onto1>
<onto2>http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl</onto2>
<uri1>http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl</uri1>
<uri2>http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl</uri2>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#Estudiante"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#Student"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#country"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#country-of-study"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#lastname"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#name"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#gender"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#gender"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#topic"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#topics-of-interest"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#firstname"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#first-name"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#city"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#city-of-study"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#year"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#year-in-phd"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#affiliation"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#institution"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
<map>
<Cell>
<entity1 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#supervisor"/>
<entity2 rdf:resource="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#phd-advisor"/>
<measure rdf:datatype="xsd:float">1.0</measure>
<relation>=</relation>
</Cell>
</map>
</Alignment>
</rdf:RDF>
...@@ -51,14 +51,13 @@ alignment <abbr>API</abbr> which explains how to interface the API ...@@ -51,14 +51,13 @@ alignment <abbr>API</abbr> which explains how to interface the API
with other components. with other components.
This tutorial will show how to: This tutorial will show how to:
<ul> <ul>
<li>communicate the alignment server <li>generate and manipulate alignments,</li>
through its REST web service API,</li> <li>perform OWL reasoning on alignments,</li>
<li>manipulate alignments with the Alignment API in Java,</li> <li>querying data expressed in both ontologies through SPARQL.</li>
<li>perform OWL reasoning on aligned ontologies and compose
alignments.</li>
</ul> </ul>
This time, the tutorial is based on Java programming and using various Whenever possible, we try to provide the answers
related APIs. through <a href="../../rest.html">REST</a>, in <a href="../../cli.html">command-line</a>, Java
programs (and later <a href="../tutorial1/server.html">Alignment server</a> interface).
</p> </p>
<p> <p>
Other tutorials are <a href="../index.html">available</a>.</p> Other tutorials are <a href="../index.html">available</a>.</p>
...@@ -638,7 +637,8 @@ OWLReasoner(Merged): There are 47 students (Estudiante) ...@@ -638,7 +637,8 @@ OWLReasoner(Merged): There are 47 students (Estudiante)
<h3><a name="transf"></a>Transforming queries</h3> <h3><a name="transf"></a>Transforming queries</h3>
<p>The following solutions use the query in the file <a href="query.sparql">query.sparql</a>.</p> <p>The following solutions use the query in the
file <a href="query.sparql">query.sparql</a> which is expressed with respect to ontology1.owl.</p>
<div class="button"> <div class="button">
<input type="button" onclick="show('qu14cli')" value="Command line"/> <input type="button" onclick="show('qu14cli')" value="Command line"/>
...@@ -649,24 +649,45 @@ OWLReasoner(Merged): There are 47 students (Estudiante) ...@@ -649,24 +649,45 @@ OWLReasoner(Merged): There are 47 students (Estudiante)
<div class="explain" id="qu14cli"> <div class="explain" id="qu14cli">
The query can be transformed on command line through: The query can be transformed on command line through:
<div class="terminal"> <div class="terminal">
$ java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.TransformQuery -a file:alignment.rdf -q query.sparql -Donto2=http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl# $ java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.TransformQuery -a file:alignment.rdf -q query.sparql -Donto2=http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl# -o results/query2.sparql
$ cp ontology2.owl results/ontology2.rdf # because arq does not owl as input
$ java -cp $CLASSPATH arq.query --query results/query2.sparql --data results/ontology2.rdf
</div> </div>
The result will be: The result will be:
<div class="result"> <div class="result">
PREFIX onto2: &lt;http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#> --------------------------------------------------------------------------------------------------------------
PREFIX aa: &lt;http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#> | fn | ln | t | s |
PREFIX rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#> ==============================================================================================================
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/> | "Archie" | "Shepp" | "Occarina University" | |
| "Sonny" | "Rollins" | "Universita di Miggliore" | "M. Pecorino" |
| "Astrud" | "Gilberto" | "Universität der Gemütlichkeit" | "Pr. Dr. M. Coppa" |
SELECT ?fn ?ln ?t ?s | "Peggy" | "Lee" | "University des Mitteleuropa" | "a.Univ.Prof.DI.Dr. Z. Melone" |
WHERE { | "Glenn" | "Miller" | "University of Shepperington" | "Professor G. Limone" |
?student rdf:type onto2:Student . | "Rickie Lee" | "Jones" | "Philip Vanderbilt Universiteit" | "A. Lambretta" |
?student onto2:first-name ?fn. | "Rickie Lee" | "Jones" | "Velo Research" | "A. Lambretta" |
?student onto2:name ?ln. | "Lionel" | "Hampton" | "Politecnico di Madalena" | "O. Mascarponne" |
OPTIONAL { ?student onto2:institution ?t . } | "Lionel" | "Hampton" | "Politecnico di Madalena" | "A. Gorgonzola" |
OPTIONAL { ?student onto2:phd-advisor ?s . } | "Eleonore" | "Rigby" | "Politecnico di Bermudas" | |
} | "Diana" | "Krall" | "Royal University of Worchester sauce" | "Dr. A. Verdura" |
| "Diana" | "Krall" | "Royal University of Worchester sauce" | "C. Fragola" |
| "Dave" | "Brubeck" | "University of Namibia" | "P. Tiramissu" |
| "Dave" | "Brubeck" | "University of Namibia" | "G. Belladonna" |
| "Milt" | "Jackson" | "Escena" | |
| "Julian" | "Aldderley" | "Politecnico di Madalena" | |
| "Betty" | "Sinclair" | "Institute for Social Coworkers" | |
| "Cilla" | "Black" | "University of Shepperington" | "Prof. G. Limone" |
| "Natalie" | "Merchant" | "JOHANNISBEER RESEARCH" | |
| "Django" | "Reinhardt" | "IRIA Saskatchevan" | "Prof. Chr. Melocoton" |
| "Django" | "Reinhardt" | "University Pie XXIII" | "Prof. Chr. Melocoton" |
| "Ray" | "Bryant" | "Handshuh University" | |
| "Jackie" | "McLean" | "Polytechnic of Madeira" | "S. Zucchini" |
| "Art" | "Tatum" | "National Kapodistrian University of Athens" | "B. Tiramisu" |
| "Duke" | "Ellington" | "Vanilla University of Technology" | "Prof. G. Cetriolo" |
| "Chick" | "Corea" | "University of Ausblick" | "Prof. Dr. A. Belladonna" |
| "Kenny" | "Burrell" | "Politecnico di Belladona" | "S. Proscuitto" |
| "Joe" | "Zawinul" | "Institute for Social Coworkers" | |
| "Dexter" | "Gordon" | "Eelberg University" | "C. Pannacotta" |
--------------------------------------------------------------------------------------------------------------
</div> </div>
</div> </div>
<div class="explain" id="qu14java"> <div class="explain" id="qu14java">
...@@ -789,11 +810,29 @@ and observe what are the differences in this case. You can of course ...@@ -789,11 +810,29 @@ and observe what are the differences in this case. You can of course
run various queries and start by running them in one of the initial run various queries and start by running them in one of the initial
ontologies instead of the merged one. ontologies instead of the merged one.
</p> </p>
<p style="background-color: red;">
This does not work, either in command line or in Java, though it has
worked in the past. Apparently, Jena does not properly load the
imported ontologies. Anyone knowing the solution will be
</p>
<div class="button"> <div class="button">
<!--input type="button" onclick="show('qu7cli')" value="Command line"/--> <input type="button" onclick="show('qu7cli')" value="Command line"/>
<input type="button" onclick="show('qu7java')" value="Java"/> <input type="button" onclick="show('qu7java')" value="Java"/>
<!--input type="button" onclick="show('qu7serv')" value="Browser"/--> <!--input type="button" onclick="show('qu7serv')" value="Browser"/-->
<input type="button" onclick="hide('qu7java')" value="Hide solutions"/> <input type="button" onclick="hide('qu7java');hide('qu7cli');" value="Hide solutions"/>
</div>
<div class="explain" id="qu7cli">
<div class="terminal">
$ cp results/alignment.owl results/alignment.rdf
$ java -cp $CLASSPATH arq.query --query query.sparql --data results/alignment.rdf
</div>
Which give the result: (INCORRECT)
<div class="result">
-------------------
| fn | ln | t | s |
===================
-------------------
</div>
</div> </div>
<div class="explain" id="qu7java"> <div class="explain" id="qu7java">
<p>Load the merged ontology under Jena:</p> <p>Load the merged ontology under Jena:</p>
...@@ -818,7 +857,7 @@ ResultSet results = qe.execSelect(); ...@@ -818,7 +857,7 @@ ResultSet results = qe.execSelect();
// Output query results // Output query results
ResultSetFormatter.out(System.out, results, query); ResultSetFormatter.out(System.out, results, query);
</div> </div>
The results for this evaluation is: The results for this evaluation is: (SHOULD BE)
<div class="result"> <div class="result">
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
| fn | ln | t | s | | fn | ln | t | s |
...@@ -946,7 +985,18 @@ generates triples using ontology1. ...@@ -946,7 +985,18 @@ generates triples using ontology1.
<h2>Full solution</h2> <h2>Full solution</h2>
<p>Do you want to see a possible solution?</p> <p>Do you want to see a possible solution?</p>
<p>A full working solution is <a href="MyApp.java">MyApp.java</a>.</p> <p>A full working solution
is <a href="MyApp.java">MyApp.java</a> which can be activated
by:</p>
<div class="terminal">
$ javac -cp $CLASSPATH -d results MyApp.java
$ java -cp $CLASSPATH:results MyApp
</div>
<p>
This is without the recourse to LogMap. The (two) LogMap parts may be
uncommented from the code and the instructions above run again with
logmap2_standalone.jar in the classpath.
</p>
<hr /> <hr />
<small> <small>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
xmlns:owl ="&owl;" xmlns:owl ="&owl;"
xmlns:dc ="&dc;"> xmlns:dc ="&dc;">
<owl:Ontology rdf:about="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl"> <owl:Ontology rdf:about="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology1.owl#">
<dc:creator>Jérôme Euzenat</dc:creator> <dc:creator>Jérôme Euzenat</dc:creator>
<dc:description>Example for Alignment API advanced turorial</dc:description> <dc:description>Example for Alignment API advanced turorial</dc:description>
<dc:date>2009-07-06</dc:date> <dc:date>2009-07-06</dc:date>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
xmlns:owl ="&owl;" xmlns:owl ="&owl;"
xmlns:dc ="&dc;"> xmlns:dc ="&dc;">
<owl:Ontology rdf:about="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl"> <owl:Ontology rdf:about="http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl#">
<dc:creator>Jérôme Euzenat</dc:creator> <dc:creator>Jérôme Euzenat</dc:creator>
<dc:description>Example for Alignment API advanced turorial</dc:description> <dc:description>Example for Alignment API advanced turorial</dc:description>
<dc:date>2009-07-06</dc:date> <dc:date>2009-07-06</dc:date>
...@@ -26,58 +26,58 @@ ...@@ -26,58 +26,58 @@
<dc:identifier rdf:datatype="&xsd;anyURI">http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl</dc:identifier> <dc:identifier rdf:datatype="&xsd;anyURI">http://alignapi.gforge.inria.fr/tutorial/tutorial4/ontology2.owl</dc:identifier>
</owl:Ontology> </owl:Ontology>
<owl:Class rdf:ID="Student"> <owl:Class rdf:about="#Student">
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:label xml:lang="en">Student</rdfs:label> <rdfs:label xml:lang="en">Student</rdfs:label>
</owl:Class> </owl:Class>
<owl:Class rdf:ID="Teacher"> <owl:Class rdf:about="#Teacher">
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<owl:disjointWith rdf:resource="#Student" /> <owl:disjointWith rdf:resource="#Student" />
<rdfs:label xml:lang="en">Staff</rdfs:label> <rdfs:label xml:lang="en">Staff</rdfs:label>
</owl:Class> </owl:Class>
<owl:DatatypeProperty rdf:ID="name"> <owl:DatatypeProperty rdf:about="#name">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="first-name"> <owl:DatatypeProperty rdf:about="#first-name">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="gender"> <owl:DatatypeProperty rdf:about="#gender">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="institution"> <owl:DatatypeProperty rdf:about="#institution">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="city-of-study"> <owl:DatatypeProperty rdf:about="#city-of-study">
<rdfs:domain rdf:resource="#Student" /> <rdfs:domain rdf:resource="#Student" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="country-of-study"> <owl:DatatypeProperty rdf:about="#country-of-study">
<rdfs:domain rdf:resource="#Student" /> <rdfs:domain rdf:resource="#Student" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="year-in-phd"> <owl:DatatypeProperty rdf:about="#year-in-phd">
<rdfs:domain rdf:resource="#Student" /> <rdfs:domain rdf:resource="#Student" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="topics-of-interest"> <owl:DatatypeProperty rdf:about="#topics-of-interest">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" /> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="phd-advisor"> <owl:DatatypeProperty rdf:about="#phd-advisor">
<rdfs:domain rdf:resource="#Student" /> <rdfs:domain rdf:resource="#Student" />
<rdfs:range rdf:resource="&xsd;string" /> <rdfs:range rdf:resource="&xsd;string" />
</owl:DatatypeProperty> </owl:DatatypeProperty>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment