tag:blogger.com,1999:blog-7434976023247631042024-02-22T11:05:38.810-08:00Semantic Web How-to'sLearn how to develop for the Semantic Web using instructions made for beginning, intermediate, and expert developers.Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-743497602324763104.post-18431028677523016122011-12-06T14:30:00.001-08:002011-12-06T14:32:29.284-08:00Semantic Web Project PresentationHere is my Semantic Web Project Presentation for Fall 2011.
<br/>
<br/>
<iframe src="https://docs.google.com/present/embed?id=ddh32cpd_1073zzn47ds" frameborder="0" width="410" height="342"></iframe>Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com0tag:blogger.com,1999:blog-743497602324763104.post-38518583443639408072011-10-31T20:57:00.000-07:002012-06-22T10:15:34.535-07:00WebSphinx and Lucene ExampleHere is a short example of how to crawl and index with WebSphinx (a Java-based web crawler) and query the created index with Lucene. You will need the following Java libraries:<br />
<br />
<a href="http://www.cs.cmu.edu/~rcm/websphinx/">WebSphinx</a><br />
<a href="http://lucene.apache.org/java/docs/index.html">Lucene</a><br />
<br />
Index.java
<br />
<pre class="brush: java">import java.net.*;
import java.io.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
public class Index {
private static StandardAnalyzer analyzer;
private static Directory index;
public static void main(String[] args) {
try {
// Setup an Analyzer and prepare a new IndexWriter
analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
index = new RAMDirectory();
IndexWriter writer = new IndexWriter(index, analyzer, true,
IndexWriter.MaxFieldLength.UNLIMITED);
// The mergeFactor value tells Lucene how many segments of equal size to build
// before merging them into a single segment
writer.setMergeFactor(20);
// Setup a new IndexCrawler instance
IndexingCrawler c = new IndexingCrawler(writer, "http://www.ceecs.fau.edu/directory");
c.run();
writer.optimize();
// Close the writer when done
writer.close();
} catch (MalformedURLException e) {
e.printStackTrace(System.out);
} catch (IOException e) {
e.printStackTrace(System.out);
}
try {
// Query the created Index
String querystr = args.length > 0 ? args[0] : "Publications OR Research OR Papers";
// The "content" arg specifies the default field to use
// when no field is explicitly specified in the query.
Query q = new QueryParser(Version.LUCENE_CURRENT, "contents", analyzer)
.parse(querystr);
// Do the actual search
int hitsPerPage = 10;
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(
hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
// Display the results
System.out.println("\nFound " + hits.length + " hits.");
for (int i = 0; i < hits.length; ++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println((i + 1) + ". " + d.get("title"));
System.out.println( "\t"+ d.get("path"));
}
// Searcher can only be closed when there
// is no need to access the documents any more.
searcher.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
</pre>
<br />
<br />
IndexCrawler. java
<br />
<pre class="brush: java">import websphinx.*;
import java.io.*;
import java.net.*;
import java.util.regex.*;
import java.util.regex.Pattern;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
public class IndexingCrawler extends Crawler {
private IndexWriter writer;
public IndexingCrawler(IndexWriter writer, String docroot) {
super();
try {
this.setRoot(new Link(docroot));
} catch (MalformedURLException e) {
this.setRoot(null);
}
this.writer = writer;
this.setSynchronous(true);
this.setDomain(Crawler.SERVER);
}
public void visit(Page p) {
boolean index = false;
System.out.println("Visiting [" + p.getURL() + "]");
if(p.getTitle() == null){
noindex(p);// skip pdf files
}else{
index(p);// process text
}
System.out.println(" Done.");
}
public void index(Page p) {
StringBuffer contents = new StringBuffer();
Document doc = new Document();
doc.add(new Field("path", p.getURL().toString(), Field.Store.YES, Field.Index.ANALYZED));
//doc.add(new Field("title", value, Field.Store.YES, Field.Index.ANALYZED));
//doc.add(Field.Keyword("modified",DateField.timeToString(p.getLastModified())));
if (p.getTitle() != null) {
doc.add(new Field("title", p.getTitle(), Field.Store.YES, Field.Index.ANALYZED));
}
System.out.println(" Indexing...");
System.out.println(" depth [" + p.getDepth() + "]");
System.out.println(" title [" + p.getTitle() + "]");
System.out.println(" modified [" + p.getLastModified() + "]");
Element[] elements = p.getElements();
for (int i = 0; i < elements.length; i++) {
if (elements[i].getTagName().equalsIgnoreCase("meta")) {
String name = elements[i].getHTMLAttribute("name", "");
String content = elements[i].getHTMLAttribute("content", "");
if (!name.equals("")) {
doc.add(new Field(name, content, Field.Store.YES, Field.Index.ANALYZED));
System.out.println(" meta [" + name + ":" + content + "]");
}
}
}
Text[] texts = p.getWords();
for (int i = 0; i < texts.length; i++) {
contents.append(texts[i].toText());
contents.append(" ");
}
doc.add(new Field("contents", contents.toString(), Field.Store.YES, Field.Index.ANALYZED));
try {
writer.addDocument(doc);
} catch (IOException e) {
throw new RuntimeException(e.toString());
}
}
public void noindex(Page p) {
System.out.println(" Skipping...");
}
}
</pre>Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com1tag:blogger.com,1999:blog-743497602324763104.post-11601627607703804832011-09-18T12:26:00.001-07:002011-09-18T12:36:24.078-07:00Protege StatementsI have used Protege to create a Person class with 10 literals. Here is the resulting OWL file:<br />
<br />
<br />
<pre class="brush: xml"><ontology ontologyiri="http://www.semanticweb.org/ontologies/2011/8/HW3.owl" xml:base="http://www.semanticweb.org/ontologies/2011/8/HW3.owl" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns="http://www.w3.org/2002/07/owl#">
<prefix iri="http://www.w3.org/1999/02/22-rdf-syntax-ns#" name="rdf">
<prefix iri="http://www.w3.org/2000/01/rdf-schema#" name="rdfs">
<prefix iri="http://www.w3.org/2001/XMLSchema#" name="xsd">
<prefix iri="http://www.w3.org/2002/07/owl#" name="owl">
<declaration>
<class iri="#Person">
</class></declaration>
<declaration>
<dataproperty iri="#address">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#cell">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#email">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#first">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#full_name">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#home">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#last">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#middle_initial">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#phone">
</dataproperty></declaration>
<declaration>
<dataproperty iri="#work">
</dataproperty></declaration>
<declaration>
<namedindividual iri="#Peter">
</namedindividual></declaration>
<subclassof>
<class iri="#Person">
<class abbreviatediri="owl:Thing">
</class></class></subclassof>
<classassertion>
<class iri="#Person">
<namedindividual iri="#Peter">
</namedindividual></class></classassertion>
<datapropertyassertion>
<dataproperty iri="#address">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">Neverland, USA</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#cell">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">(555) 555-5551</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#email">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">peter.pan@disney.com</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#first">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">Peter</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#full_name">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">Peter Pan</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#home">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">(555) 555-5552</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#last">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">Pan</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#middle_initial">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">M</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#phone">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">(555) 555-5555</literal>
</namedindividual></dataproperty></datapropertyassertion>
<datapropertyassertion>
<dataproperty iri="#work">
<namedindividual iri="#Peter">
<literal datatypeiri="&rdfs;Literal">(555) 555-5553</literal>
</namedindividual></dataproperty></datapropertyassertion>
<subdatapropertyof>
<dataproperty iri="#cell">
<dataproperty iri="#phone">
</dataproperty></dataproperty></subdatapropertyof>
<subdatapropertyof>
<dataproperty iri="#first">
<dataproperty iri="#full_name">
</dataproperty></dataproperty></subdatapropertyof>
<subdatapropertyof>
<dataproperty iri="#home">
<dataproperty iri="#phone">
</dataproperty></dataproperty></subdatapropertyof>
<subdatapropertyof>
<dataproperty iri="#last">
<dataproperty iri="#full_name">
</dataproperty></dataproperty></subdatapropertyof>
<subdatapropertyof>
<dataproperty iri="#middle_initial">
<dataproperty iri="#full_name">
</dataproperty></dataproperty></subdatapropertyof>
<subdatapropertyof>
<dataproperty iri="#work">
<dataproperty iri="#phone">
</dataproperty></dataproperty></subdatapropertyof>
<datapropertydomain>
<dataproperty iri="#address">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#cell">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#email">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#first">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#full_name">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#home">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#last">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#middle_initial">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#phone">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertydomain>
<dataproperty iri="#work">
<class iri="#Person">
</class></dataproperty></datapropertydomain>
<datapropertyrange>
<dataproperty iri="#address">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#cell">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#email">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#first">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#full_name">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#last">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#middle_initial">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#phone">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
<datapropertyrange>
<dataproperty iri="#work">
<datatype abbreviatediri="xsd:string">
</datatype></dataproperty></datapropertyrange>
</prefix></prefix></prefix></prefix></ontology>
</pre>
Here is a screenshot of a SPARQL query taken in Protege 4.1:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYORJ0OPM_U5DSCdvXjt3eF9fTFoccrVlCP_ZSoNJH1m_KF2rkwYxagFbHKTdlJM2aEyr4s97d02gOh_DAmKR33ZoOp0vyHm43Sqv950SGornrW-h53hkt4ALhbdn_LO0eK4HWDETACF5T/s1600/SPARQL_Query.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYORJ0OPM_U5DSCdvXjt3eF9fTFoccrVlCP_ZSoNJH1m_KF2rkwYxagFbHKTdlJM2aEyr4s97d02gOh_DAmKR33ZoOp0vyHm43Sqv950SGornrW-h53hkt4ALhbdn_LO0eK4HWDETACF5T/s320/SPARQL_Query.png" width="320" /></a></div>
<br />Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com0tag:blogger.com,1999:blog-743497602324763104.post-33653457695547426052011-09-02T15:07:00.000-07:002011-09-02T15:16:35.844-07:00Geonames and FOAF RDFI have edited the map in <a href="http://geonames.org/">geonames.org</a> to include my favorite restaurant: Five Guys.<br />
<br />
Here is a screenshot:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4F0NL6LZECF1o0KPOR8wLDAHSEouser_NjSaQ6s7yK_ohjLtLSS6YztAIMaVHcV9ECDvuRguPXj3neSQCFWNfdicU9XnbPLuNh7BWQYZ2fvUK6O44ETnDmt-FbIXGxb7IIKQaMQ9REgz/s1600/Five+Guys-GeoNames" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4F0NL6LZECF1o0KPOR8wLDAHSEouser_NjSaQ6s7yK_ohjLtLSS6YztAIMaVHcV9ECDvuRguPXj3neSQCFWNfdicU9XnbPLuNh7BWQYZ2fvUK6O44ETnDmt-FbIXGxb7IIKQaMQ9REgz/s320/Five+Guys-GeoNames" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;">Secondly, I created a FOAF file from <a href="http://www.foaf-project.org/">http://www.foaf-project.org/</a>. Here is a screenshot:</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOSi8chLcwPOXooUOTemz8gyoUDNxY9WyKNedoFGDXARsb2YL4_6lT214xK1O42Jc8euTMCvQUzDGn3fqW2tz-_hsB_juVAK29pefpzdXN7Q56p_zYa2kXEECqVCZyRibRjIZuVPMEHpNw/s1600/create_foaf" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOSi8chLcwPOXooUOTemz8gyoUDNxY9WyKNedoFGDXARsb2YL4_6lT214xK1O42Jc8euTMCvQUzDGn3fqW2tz-_hsB_juVAK29pefpzdXN7Q56p_zYa2kXEECqVCZyRibRjIZuVPMEHpNw/s320/create_foaf" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;">The resulting RDF file is the following:</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><pre class="brush: xml"><rdf:rdf xmlns:admin="http://webns.net/mvcb/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<foaf:personalprofiledocument rdf:about="">
<foaf:maker rdf:resource="#me">
<foaf:primarytopic rdf:resource="#me">
<admin:generatoragent rdf:resource="http://www.ldodds.com/foaf/foaf-a-matic">
<admin:errorreportsto rdf:resource="mailto:leigh@ldodds.com">
</admin:errorreportsto></admin:generatoragent></foaf:primarytopic></foaf:maker></foaf:personalprofiledocument>
<foaf:person rdf:id="me">
<foaf:name>Hello Foaf</foaf:name>
<foaf:title>Mr</foaf:title>
<foaf:givenname>Hello</foaf:givenname>
<foaf:family_name>Foaf</foaf:family_name>
<foaf:nick>Hey</foaf:nick>
<foaf:mbox_sha1sum>7cf7f585c62389f71b0a99487c523e183ed93857</foaf:mbox_sha1sum>
<foaf:homepage rdf:resource="HelloFOAF.org">
<foaf:phone rdf:resource="tel:(555)-555-5555">
<foaf:workplacehomepage rdf:resource="FOAF Workshop">
<foaf:schoolhomepage rdf:resource="Foaf community Highschool">
<foaf:knows>
<foaf:person>
<foaf:name>Alex</foaf:name>
<foaf:mbox_sha1sum>c040dca66fbcd9569f4184a7d4b8d2150973744a</foaf:mbox_sha1sum></foaf:person></foaf:knows></foaf:schoolhomepage></foaf:workplacehomepage></foaf:phone></foaf:homepage></foaf:person>
</rdf:rdf>
</pre><br />
Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com0tag:blogger.com,1999:blog-743497602324763104.post-76396422162146603132011-08-27T14:17:00.000-07:002011-09-18T12:30:22.151-07:00Setup Semantic Web Development Environment<span class="Apple-style-span" style="font-size: large;">What you need:</span><br />
The following links will take you to the download area for each tool.<br />
<br />
<a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html">Java JDK</a><br />
<a href="http://www.eclipse.org/downloads/">Eclipse</a><br />
<a href="http://sourceforge.net/projects/jena/files/">Jena</a><br />
<a href="http://protege.stanford.edu/download/protege/4.1/installanywhere/Web_Installers/">Protege</a><br />
<a href="http://clarkparsia.com/pellet">Pellet</a><br />
<br />
<span class="Apple-style-span" style="font-size: large;">Jena Tutorial</span><br />
The following website will give you a step-by-step tutorial for the Jena library in Eclipse.<br />
<br />
<a href="http://www.iandickinson.me.uk/articles/jena-eclipse-helloworld/">http://www.iandickinson.me.uk/articles/jena-eclipse-helloworld/</a><br />
<br />
<b>Note: </b>The following is the completed JenaTutorial example for HelloRDFWorld.java<br />
<b><br />
</b><br />
<pre class="brush: java">package tutorial;
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
public class HelloRDFWorld {
/**
* @param args
*/
public static void main(String[] args) {
Model m = ModelFactory.createDefaultModel();
String NS = "http://example.com/test/";
Resource r = m.createResource(NS + "r");
Property p = m.createProperty(NS + "p");
r.addProperty(p,"hello world", XSDDatatype.XSDstring);
m.write(System.out, "Turtle");
}
}
</pre><br />
The following is a screenshot of the completed HelloSemanticWeb example for Chapter 2 of the book.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaXT8Ow-GEojI_xeDp9DF8LdgnDJtxY1mILzMDitmO-R7x1AYzO_CV01hy7E-oV3WaCc0aiw6uh4ZLW4Vk0J4rzLvfL7-G8ux1TwXUEr4Hw5h_GJpwGyAydarJUW-9719vhVMdzA9eZmaw/s1600/hellosemanticweb_ch2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaXT8Ow-GEojI_xeDp9DF8LdgnDJtxY1mILzMDitmO-R7x1AYzO_CV01hy7E-oV3WaCc0aiw6uh4ZLW4Vk0J4rzLvfL7-G8ux1TwXUEr4Hw5h_GJpwGyAydarJUW-9719vhVMdzA9eZmaw/s400/hellosemanticweb_ch2.png" width="400" /></a></div><br />
<br />
<br />
Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com3tag:blogger.com,1999:blog-743497602324763104.post-13955191842614687492011-08-27T11:40:00.000-07:002011-08-27T11:41:40.547-07:00What is Semantic Web?Invented by <a href="http://www.w3.org/People/Berners-Lee/">Timer Berners-Lee</a>, the man behind the <a href="http://www.w3.org/">World Wide Web</a>. The Semantic Web is an extension of the web which allows machines to search, aggregate and combine the information stored on the web. The information is stored in web pages that are designed to be human readable, and so new technologies are required for machine readability. The <a href="http://www.w3.org/RDF/">RDF</a> and <a href="http://www.w3.org/XML/">XML</a> technologies are used to turn basic web data in to data that can be processed by machines.Victor E. Gallegohttp://www.blogger.com/profile/01133548574540677439noreply@blogger.com0