Sunday, December 14, 2008

Blatt 6

1.
Verwendung von http://dbpedia.org/snorql/

a)

SELECT ?abstract WHERE {
:Albert_Einstein dbpedia2:abstract ?abstract .
FILTER (lang(?abstract) = 'de')
}

abstract
"Albert Einstein (* 14. März 1879 in Ulm; † 18. April 1955 in Princeton, USA) war ein [...] verstand er sich selbst als Pazifist, Sozialist und Zionist."


SELECT ?person WHERE {
:Albert_Einstein dbpedia2:doctoralStudents ?person.
}

[no results]


SELECT ?person WHERE {
:Albert_Einstein dbpedia2:almaMater ?uni.
?person dbpedia2:almaMater ?uni.
FILTER (?person != :Albert_Einstein)
}

person
[...]


erste Variante:

SELECT DISTINCT ?person WHERE {
{
:Albert_Einstein dbpedia2:almaMater ?uni.
?person dbpedia2:almaMater ?uni.
FILTER (?person != :Albert_Einstein)
?person <http://dbpedia.org/ontology/award> :Nobel_Prize_in_Physics.
}
UNION
{
:Albert_Einstein dbpedia2:almaMater ?uni.
?person dbpedia2:almaMater ?uni.
FILTER (?person != :Albert_Einstein)
?person dbpedia2:awards :Nobel_Prize_in_Physics.
}
UNION
{
:Albert_Einstein dbpedia2:almaMater ?uni.
?person dbpedia2:almaMater ?uni.
FILTER (?person != :Albert_Einstein)
?person dbpedia2:prizes :Nobel_Prize_in_Physics.
}
}

person
:Charles_%C3%89douard_Guillaume


zweite Variante:

SELECT DISTINCT ?person WHERE {
:Albert_Einstein dbpedia2:almaMater ?uni.
?person dbpedia2:almaMater ?uni.
FILTER (?person != :Albert_Einstein)
?person skos:subject <http://dbpedia.org/resource/Category:Nobel_laureates_in_Physics>.
}

person
:Charles_%C3%89douard_Guillaume
:Wilhelm_Conrad_R%C3%B6ntgen


b)

SELECT ?person WHERE {
:Star_Trek dbpedia2:origin ?origin.
?origin dbpedia2:starring ?person.
}

person
:DeForest_Kelley
:George_Takei
:James_Doohan
:Leonard_Nimoy
:Nichelle_Nichols
:Walter_Koenig
:William_Shatner


SELECT DISTINCT ?series WHERE {
:Star_Trek dbpedia2:origin ?origin.
?origin dbpedia2:starring ?person.
?series dbpedia2:starring ?person.
FILTER (?series != ?origin)
}

series
[...]


SELECT DISTINCT ?series WHERE {
:Star_Trek dbpedia2:origin ?origin.
?origin dbpedia2:starring ?person.
?series dbpedia2:starring ?person.
FILTER (?series != ?origin)
?series <http://dbpedia.org/ontology/releaseDate> ?date.
FILTER (xsd:date(?date) > xsd:date("1990-12-31"))
}

series
[...]


c)

SELECT ?name ?birth ?death WHERE {
?person dbpedia2:occupation :Scientist.
?person dbpedia2:name ?name.
?person <http://dbpedia.org/ontology/birthdate> ?birth.
?person <http://dbpedia.org/ontology/deathdate> ?death.
}

name birth death
[...]


SELECT ?name WHERE {
{
?person dbpedia2:occupation :Scientist.
?person dbpedia2:name ?name.
?person <http://dbpedia.org/ontology/birthdate> ?birth.
?person <http://dbpedia.org/ontology/deathdate> ?death.
?person <http://dbpedia.org/ontology/deathplace> :Berlin.
FILTER (xsd:date(?death) < xsd:date("1950-01-01"))
}
UNION
{
?person dbpedia2:occupation :Scientist.
?person dbpedia2:name ?name.
?person dbpedia2:dateOfBirth ?birth.
?person dbpedia2:dateOfDeath ?death.
?person dbpedia2:deathPlace :Berlin.
FILTER (xsd:date(?death) < xsd:date("1950-01-01"))
}
}

[no results]


d)

SELECT ?person WHERE {
?person dbpedia2:pseudonym ?pseudonym.
OPTIONAL { ?person dbpedia2:dateOfDeath ?date }.
FILTER (!bound(?date))
OPTIONAL { ?person dbpedia2:deathDate ?date2 }.
FILTER (!bound(?date2))
OPTIONAL { ?person dbpedia2:deathPlace ?place }.
FILTER (!bound(?place))
OPTIONAL { ?person <http://dbpedia.org/ontology/deathdate> ?date3 }.
FILTER (!bound(?date3))
OPTIONAL { ?person <http://dbpedia.org/ontology/deathplace> ?place2 }.
FILTER (!bound(?place2))
}

person
[...]


2.

a)

PREFIX ex: <http://example.org/>
SELECT ?objekt WHERE {
{
ex:Sonne ex:satellit ?objekt.
}
UNION
{
ex:Sonne ex:satellit ?satellit.
?satellit ex:satellit ?objekt.
}
}


b)

PREFIX ex: <http://example.org/>
SELECT ?objekt ?oberobjekt WHERE {
?objekt ex:radius ?radius.
FILTER (?radius * ?radius * ?radius * 4 / 3 > 20000000000)
?oberobjekt ex:satellit ?objekt.
}


c)

PREFIX ex: <http://example.org/>
SELECT ?objekt WHERE {
?objekt ex:name ?name.
FILTER (lang(?name) = 'en')
?oberobjekt ex:satellit ?objekt.
?oberobjekt ex:radius ?radius.
FILTER (?radius > 3000)
}


3.

-teils Umsetzung durch ein Programm
-Probleme und deshalb durch manuelle Erledigung:
*das Finden aller tatsächlich relevanten Hyperlinks; Ausgabe aller potenziell relevanter Hyperlinks; entsprechendes Auslassen der irrelevanten Hyperlinks
*einige Objekte besitzen mehrere Properties (z.B. dbpedia:Denmark ist ein Objekt der Properties p:birthPlace und p:nationality); Erschließung aus dem Kontext, welche Property passend ist
*daraus ergibt sich das Problem, dass in bestimmten Kontexten keine passende Property existiert (z.B. Textpassage, in der es um seinen Vater und den dänischen König geht)

-Reduzierung des Quelltextes auf die Links mit entsprechenden Annotationen und der Definition des Namespaces für die verwendeten Properties aus der DBPedia

<div id="globalWrapper" xmlns:p="http://dbpedia.org/property/">

<a rel="p:birthPlace" href="/w/index.php?title=Knutstorp_Castle&action=edit&redlink=1" class="new" title="Knutstorp Castle (page does not exist)">Knutstorp Castle</a>
<a rel="p:birthPlace" href="/wiki/Scania" title="Scania">Scania</a>
<a rel="p:birthPlace" href="/wiki/Denmark" title="Denmark">Denmark</a>
<a rel="p:birthPlace" href="/wiki/Sweden" title="Sweden">Sweden</a>
<a rel="p:dateOfDeath" href="/wiki/October_24" title="October 24">24 October</a>
<a rel="p:deathPlace" href="/wiki/Prague" title="Prague">Prague</a>
<a rel="p:nationality" href="/wiki/Denmark" title="Denmark">Danish</a>
<a rel="p:occupation" href="/wiki/Nobility" title="Nobility">Nobleman</a>
<a rel="p:occupation" href="/wiki/Astronomy" title="Astronomy">Astronomer</a>
<a rel="p:parents" href="/wiki/Otte_Brahe" title="Otte Brahe">Otte Brahe</a>
<a rel="p:parents" href="/w/index.php?title=Beate_Bille&action=edit&redlink=1" class="new" title="Beate Bille (page does not exist)">Beate Bille</a>
<a rel="p:deathPlace" href="/wiki/Prague" title="Prague">Prague</a>
<a rel="p:birthPlace" href="/w/index.php?title=Knutstorp_Castle&action=edit&redlink=1" class="new" title="Knutstorp Castle (page does not exist)">Knutstorp Castle</a>
<a rel="p:dateOfDeath" href="/wiki/October_24" title="October 24">24 October</a>
<a rel="p:deathPlace" href="/wiki/Prague" title="Prague">Prague</a>
<a rel="p:nationality" href="/wiki/Denmark" title="Denmark">Danish</a>
<a rel="p:occupation" href="/wiki/Nobility" title="Nobility">nobleman</a>
<a rel="p:occupation" href="/wiki/Astronomy" title="Astronomy">astronomical and planetary</a>
<a rel="p:birthPlace" href="/wiki/Sk%C3%A5neland" title="Skåneland">Scania</a>
<a rel="p:occupation" href="/wiki/Astronomy" title="Astronomy">astronomer</a>
<a rel="p:birthPlace" href="/w/index.php?title=Knutstorp_Castle&action=edit&redlink=1" class="new" title="Knutstorp Castle (page does not exist)">Knutstorp Castle</a>
<a rel="p:birthPlace" href="/wiki/Scania" title="Scania">Scania</a>
<a rel="p:parents" href="/wiki/Otte_Brahe" title="Otte Brahe">Otte Brahe</a>
<a rel="p:parents" href="/w/index.php?title=Beate_Bille&action=edit&redlink=1" class="new" title="Beate Bille (page does not exist)">Beate Bille</a>
<a rel="p:nationality" href="/wiki/Denmark" title="Denmark">Danish</a>
<a rel="p:occupation" href="/wiki/Astronomy" title="Astronomy">astronomy</a>
<a rel="p:birthPlace" href="/wiki/Denmark" title="Denmark">Denmark</a>
<a rel="p:dateOfDeath" href="/wiki/October_24" title="October 24">24 October</a>
<a rel="p:deathPlace" href="/wiki/Prague" title="Prague">Prague</a>
<a rel="p:deathPlace" href="/wiki/Prague" title="Prague">Prague</a>

</div>

Sunday, December 7, 2008

Blatt 5

1.

a)


In dem rdf-Dokument wird eine Eigenschaft namens "http://example.org/hauptstadt_von" definiert, deren Definitionsbereich "Städte" und Wertebereich "Länder" sind, d.h. eine "Stadt" ist "hauptstadt_von" einem Land. Ein Land ist eine Klasse, deren lesbarer Name die englischsprachige Form eines Landes ist. Eine Stadt ist eine Klasse, deren lesbarer Name die englischsprachige Form einer Stadt ist. Zudem wird eine Instanz der Klasse Land mit dem Namen "http://example.org/deutschland" erzeugt. Die Instanz der Klasse Stadt mit dem Namen "http://example.org/berlin" trägt den lesbaren Namen "Berlin" verweist mit Hilfe der Eigenschaft "http://example.org/hauptstadt_von" auf die Instanz der Klasse Land mit Namen "http://example.org/deutschland", d.h. "http://example.org/berlin" ist die Hauptstadt von "http://example.org/deutschland".



b)

2.

a)


b)


<?xml version="1.0"?>

<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:b="http://book.com/" xml:base="http://book.com/">


  <rdfs:Class rdf:about="Term">

    <rdfs:SubClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="Buzzword">

    <rdfs:SubClassOf rdf:resource="Term"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="Keyword">

    <rdfs:SubClassOf rdf:resource="Term"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="TitleKeyword">

    <rdfs:SubClassOf rdf:resource="Keyword"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="TextKeyword">

    <rdfs:SubClassOf rdf:resource="Keyword"/>

  </rdfs:Class>


  <rdf:Property rdf:about="crossReference">

    <rdfs:SubPropertyOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>

    <rdfs:domain rdf:resource="Keyword"/>

    <rdfs:range rdf:resource="Keyword"/>

  </rdf:Property>

  <rdf:Property rdf:about="see">

    <rdfs:SubPropertyOf rdf:resource="crossReference"/>

  </rdf:Property>

  <rdf:Property rdf:about="seeAlso">

    <rdfs:SubPropertyOf rdf:resource="crossReference"/>

  </rdf:Property>


  <rdf:Description rdf:about="Book">

   <b:has rdf:resource="Index"/>

  </rdf:Description>

  <rdf:Description rdf:about="Index">

   <b:has rdf:resource="IndexEntry"/>

  </rdf:Description>

  <rdf:Description rdf:about="IndexEntry">

   <b:mainHeading rdf:resource="Keyword"/>

  </rdf:Description>

  <rdf:Description rdf:about="IndexEntry">

   <b:has rdf:resource="ReferenceLocator"/>

  </rdf:Description>

  <rdf:Description rdf:about="IndexEntry">

   <b:has rdf:resource="SubEntry"/>

  </rdf:Description>

  <rdf:Description rdf:about="SubEntry">

   <b:mainHeading rdf:resource="Keyword"/>

  </rdf:Description>

  <rdf:Description rdf:about="SubEntry">

   <b:has rdf:resource="ReferenceLocator"/>

  </rdf:Description>

  <rdf:Description rdf:about="SubEntry">

   <b:has rdf:resource="SubEntry"/>

  </rdf:Description>

  <rdf:Description rdf:about="Buzzword">

   <b:sumUpPartOf rdf:resource="Book"/>

  </rdf:Description>

  <rdf:Description rdf:about="Keyword">

   <b:isContainedIn rdf:resource="Book"/>

  </rdf:Description>

</rdf:RDF>



c)


Die Schwierigkeiten bei der Modellierung mit RDF/RDFS bestehen darin, Häufigkeiten des Auftretens von Beziehungen auszudrücken. Im vorliegenden Beispiel betrifft dies beispielsweise die Aussage, dass ein Indexeintrag eine oder mehrere Seitenangaben und eine Reihe von Untereinträgen enthält.



3.


Jede Pizza ist eine Speise.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xml:base="http://italien.de/">

  <rdf:Description rdf:about="Pizza">

    <rdf:type rdf:resource="Speise"/>

  </rdf:Description>

</rdf:RDF>



Eine Pizza hat immer mindestens zwei Beläge.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:it="http://italien.de/" xml:base="http://italien.de/">

  <rdf:Description rdf:about="Pizza">

    <it:MindestanzahlBeläge rdf:datatype="http://www.w3.org/2001/XMLSchema#int">2</it:BelagAnzahl >

  </rdf:Description>

</rdf:RDF>


Nicht wirklich zufriedenstellende Lösung, da die Aussage, dass es mindestens zwei Beläge sind, nur über das Prädikat umsetzbar ist.



Jede Pizza der Klasse PizzaMargarita hat Tomate als Belag.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:it="http://italien.de/" xml:base="http://italien.de/">

  <rdfs:Class rdf:about="Pizza">

    <rdfs:SubClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="PizzaMargarita">

    <rdfs:SubClassOf rdf:resource="Pizza"/>

  </rdfs:Class>

  <rdf:Description rdf:about="PizzaMargarita">

    <it:hatBelag rdf:resource="Tomate"/>

  </rdf:Description>

</rdf:RDF>



Alles, was einen Belag hat, ist eine Pizza.


Nicht zufriedenstellend modellierbar, da eine wenn-dann-Beziehung in RDF nicht ausdrückbar ist.



Keine Pizza aus der Klasse PizzaMargarita hat einen Belag aus der Klasse Fleisch.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:it="http://italien.de/" xml:base="http://italien.de/">

  <rdfs:Class rdf:about="Pizza">

    <rdfs:SubClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="PizzaMargarita">

    <rdfs:SubClassOf rdf:resource="Pizza"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="Belag">

    <rdfs:SubClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>

  </rdfs:Class>

  <rdfs:Class rdf:about="Fleisch">

    <rdfs:SubClassOf rdf:resource="Belag"/>

  </rdfs:Class>

  <rdf:Property rdf:about="hatBelagNicht">

    <rdfs:SubPropertyOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>

    <rdfs:domain rdf:resource="PizzaMargarita"/>

    <rdfs:range rdf:resource="Fleisch"/>

  </rdf:Property>

</rdf:RDF>



Eine Calzone ist eine Pizza ohne Käse.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:it="http://italien.de/" xml:base="http://italien.de/">

  <rdf:Description rdf:about="Calzone">

    <rdf:type rdf:resource="Pizza"/>

    <it:hatBelagNicht rdf:resource="Käse"/>

  </rdf:Description>

</rdf:RDF>

Monday, December 1, 2008

Blatt 4

1.

a)


Ch. Meinel, H. Sack: WWW -- Kommunikation, Internetworking, Web Technologien, Springer Verlag, 2004.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

            xmlns:dc="http://purl.org/dc/elements/1.1/">  

  <rdf:Description>

    <dc:title>WWW - Kommunikation, Internetworking, Web-Technologien</dc:title>

    <dc:creator>Christoph Meinel</dc:creator>

    <dc:creator>Harald Sack</dc:creator>

    <dc:publisher>Springer</dc:publisher>

    <dc:subject>Internet, WWW, Kommunikation</dc:subject>

    <dc:description>Dieses Handbuch bietet für alle Nutzer und Entwickler des World Wide Web einen fundierten Einblick in dessen Aufbau und Funktionsweise. Die Autoren stellen die Internet-Technologie ausführlich dar und geben einen umfassenden Überblick über die relevanten Teilbereiche des WWW. Neben den allgemeinen theoretischen und praktischen Grundlagen der Netzwerktechnik und einer Darstellung der TCP/IP-Protokolle werden auch die vielfältigen Medientypen und deren Kodierung im WWW erläutert. Darauf aufbauend wird auf spezielle Web-Technologien im WWW wie HTTP, HTML, CSS, XML/XSL aber auch Skriptsprachen und CGI-Programmierung eingegangen. Dabei werden die allgemeinverständlich angelegten Kapitel punktuell durch relevante Schwerpunktthemen technischer Natur ergänzt und vertieft. Zahlreiche Abbildungen sowie Index und Glossar zu jedem Kapitel erhöhen den praktischen Nutzen des Handbuchs</dc:description>

    <dc:identifier>3-540-44276-6</dc:identifier>

    <dc:format>book</dc:format>

    <dc:type>text</dc:type>

    <dc:date>2004-09-30</dc:date>

    <dc:language>de</dc:language>

  </rdf:Description>

</rdf:RDF>



Ch. Meinel, M. Mundhenk: Mathematische Grundlagen der Informatik, B. G. Teubner Verlag, 2006.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

            xmlns:dc="http://purl.org/dc/elements/1.1/">  

  <rdf:Description>

    <dc:title>Mathematische Grundlagen der Informatik</dc:title>

    <dc:creator>Christoph Meinel</dc:creator>

    <dc:creator>Martin Mundhenk</dc:creator>

    <dc:publisher>B.G. Teubner</dc:publisher>

    <dc:subject>Mathematik, Informatik, Logik, Mengen, Relationen, Kombinatorik, Graphen</dc:subject>

    <dc:description>Konzepte und Anwendungen der Informatik durchdringen in immer stärkerem Maße alle Bereiche der Wirtschaft und Gesellschaft; ohne ihr Grundverständnis ist deshalb ein erfolgreiches Wirken dort zunehmend unmöglich. Das daraus resultierende große Interesse auch bei Nichtinformatikern an der Informatik und ihren intellektuellen Grundlagen macht eine Einführung auch in die mathematischen Grundlagen der Informatik immer dringlicher, eine Einführung, die auch ohne eine traditionell vorausgesetzte mathematische Grundausbildung auskommt und trotzdem sachkundig in die für die Informatik typischen und grundlegenden mathematischen Denkweisen und Formalisierungen einführt. Das vorliegende Buch hat sich diese Aufgabe zum Ziel gestellt. Es führt den interessierten Leser ein in das für die Informatik typische Vorgehen, zunächst noch vage Ideen und Konzepte schrittweise zu formalisieren und damit einer Bearbeitung durch den Computer zugänglich zu machen.</dc:description>

    <dc:identifier>3-8351-0049-1</dc:identifier>

    <dc:format>book</dc:format>

    <dc:type>text</dc:type>

    <dc:date>2006-06-13</dc:date>

    <dc:language>de</dc:language>

  </rdf:Description>

</rdf:RDF>



Ch. Meinel, Th. Theobald: Algorithmen und Datenstrukturen im VLSI-Design: OBDD - Grundlagen und Anwendungen, Springer Verlag, 1998.


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

            xmlns:dc="http://purl.org/dc/elements/1.1/">  

  <rdf:Description>

    <dc:title>Algorithmen und Datenstrukturen im VLSI-Design: OBDD - Grundlagen und Anwendungen</dc:title>

    <dc:creator>Christoph Meinel</dc:creator>

    <dc:creator>Thorsten Theobald</dc:creator>

    <dc:publisher>Springer</dc:publisher>

    <dc:subject>Agorithmen, Datenstrukturen, VLSI</dc:subject>

    <dc:description>Eines der Hauptprobleme beim Chipentwurf besteht darin, daß die Anzahl der zu bewältigenden Kombinationen der einzelnen Chipbausteine ins Unermeßliche steigt. Hier hat sich eine sehr fruchtbare Verbindung zu einem Kerngebiet der Theoretischen Informatik, dem Gebiet des Entwurfs von Datenstrukturen und effizienten Algorithmen, herstellen lassen: Die Verbindung besteht im Konzept der geordneten binären Entscheidungsgraphen, das in zahlreichen CAD-Projekten zu einer beträchtlichen Leistungssteigerung geführt hat. Die Autoren stellen die Grundlagen dieses interdisziplinären Forschungsgebiets dar und behandeln wichtige Anwendungen aus dem rechnergestützten Schaltkreisentwurf.</dc:description>

    <dc:identifier>3-540-63869-5</dc:identifier>

    <dc:format>book</dc:format>

    <dc:type>text</dc:type>

    <dc:date>1998-03-</dc:date>

    <dc:language>de</dc:language>

  </rdf:Description>

</rdf:RDF>



b)


In einem Tag kann man ein Attribut xml:base definieren. Alle Unterelemente dieses Tags besitzen diese URI als Basis-URI. Relative URIs in Attributwerten der Attribute rdf:about, rdf:resource, rdf:datatype, ref:ID werden mit dieser Basis-URI interpretiert. Bei Dokumenten ohne Definition einer Basis-URI wird die Adresse des rdf-Dokuments verwendet.


Beispiel:


<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xmlns:hpi=“http://hpi-web.de/example#"

                  xml:base=“http://hpi-web.de/example">


  <rdf:Description rdf:about="#test">

  ...

</rdf:RDF>



c)


Darth Vader ist Lukes Vater.


Turtle:

<http://star-wars.com/DarthVader> <http://description.org/schema/istVater> <http://star-wars.com/Luke>.


RDF:

<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xmlns:s=“http://description.org/schema/"

                  xml:base=“http://star-wars.com/">

  <rdf:Description rdf:about="DarthVader">

    <s:istVater rdf:resource="Luke" />

  </rdf:Description>

</rdf:RDF>



Darth Vader hat gesagt, dass er Lukes Vater ist.


Turtle:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix s: <http://description.org/schema/>.

@prefix sw: <http://star-wars.com/>.

sw:StatementOnHimself rdf:subject sw:DarthVader.

sw:StatementOnHimself rdf:predicate s:istVater.

sw:StatementOnHimself rdf:object sw:Luke.

sw:StatementOnHimself rdf:type rdf:Statement.

sw:DarthVader s:hatGesagt sw:StatementOnHimself.


RDF:

<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xmlns:s=“http://description.org/schema/"

                  xml:base=“http://star-wars.com/">

  <rdf:Description rdf:about="StatementOnHimself">

    <rdf:subject rdf:resource="DarthVader" />

    <rdf:predicate rdf:resource="http://description.org/schema/istVater" />

    <rdf:object rdf:resource="Luke" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="DarthVader">

    <s:hatGesagt rdf:resource="StatementOnHimself" />

  </rdf:Description>

</rdf:RDF>



Der Imperator hat erfahren, dass Darth Vader gesagt hat, dass er Lukes Vater sei.


Turtle:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix s: <http://description.org/schema/>.

@prefix sw: <http://star-wars.com/>.

sw:StatementOnHimself rdf:subject sw:DarthVader.

sw:StatementOnHimself rdf:predicate s:istVater.

sw:StatementOnHimself rdf:object sw:Luke.

sw:StatementOnHimself rdf:type rdf:Statement.

sw:StatementOnDarthVader rdf:subject sw:DarthVader.

sw:StatementOnDarthVader rdf:predicate s:hatGesagt.

sw:StatementOnDarthVader rdf:object sw:StatementOnHimself.

sw:StatementOnDarthVader rdf:type sw:Statement.

sw:Imperator s:hatErfahren sw:StatementOnDarthVader.


RDF:

<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xmlns:s=“http://description.org/schema/"

                  xml:base=“http://star-wars.com/">

  <rdf:Description rdf:about="StatementOnHimself">

    <rdf:subject rdf:resource="DarthVader" />

    <rdf:predicate rdf:resource="http://description.org/schema/istVater" />

    <rdf:object rdf:resource="Luke" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="StatementOnDarthVader">

    <rdf:subject rdf:resource="DarthVader" />

    <rdf:predicate rdf:resource="http://description.org/schema/hatGesagt" />

    <rdf:object rdf:resource="StatementOnHimself" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="Imperator">

    <s:hatErfahren rdf:resource="StatementOnDarthVader" />

  </rdf:Description>

</rdf:RDF>



Darth Vader ärgert sich darüber, dass der Imperator erfahren hat, dass Darth Vader gesagt hat, dass er Lukes Vater sei.



Turtle:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix s: <http://description.org/schema/>.

@prefix sw: <http://star-wars.com/>.

sw:StatementOnHimself rdf:subject sw:DarthVader.

sw:StatementOnHimself rdf:predicate s:istVater.

sw:StatementOnHimself rdf:object sw:Luke.

sw:StatementOnHimself rdf:type rdf:Statement.

sw:StatementOnDarthVader rdf:subject sw:DarthVader.

sw:StatementOnDarthVader rdf:predicate s:hatGesagt.

sw:StatementOnDarthVader rdf:object sw:StatementOnHimself.

sw:StatementOnDarthVader rdf:type sw:Statement.

sw:StatementOnImperator rdf:subject sw:Imperator.

sw:StatementOnImperator rdf:predicate s:hatErfahren.

sw:StatementOnImperator rdf:object sw:StatementOnDarthVader.

sw:StatementOnImperator rdf:type sw:Statement.

sw:DarthVader s:sichÄrgern sw:StatementOnImperator.


RDF:

<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xmlns:s=“http://description.org/schema/"

                  xml:base=“http://star-wars.com/">

  <rdf:Description rdf:about="StatementOnHimself">

    <rdf:subject rdf:resource="DarthVader" />

    <rdf:predicate rdf:resource="http://description.org/schema/istVater" />

    <rdf:object rdf:resource="Luke" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="StatementOnDarthVader">

    <rdf:subject rdf:resource="DarthVader" />

    <rdf:predicate rdf:resource="http://description.org/schema/hatGesagt" />

    <rdf:object rdf:resource="StatementOnHimself" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="StatementOnImperator">

    <rdf:subject rdf:resource="Imperator" />

    <rdf:predicate rdf:resource="http://description.org/schema/hatErfahren" />

    <rdf:object rdf:resource="StatementOnDarthVader" />

    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" />

  </rdf:Description>

  <rdf:Description rdf:about="DarthVader">

    <s:sichÄrgern rdf:resource="StatementOnImperator" />

  </rdf:Description>

</rdf:RDF>



d)


Jedes Tabellenschema besitzt einen Container vom Typ "rdf:Seq". Das dazu gehörige "rdf:about"-Attribut trägt den Namen der Relation. Mit Hilfe des "rdf:li"-Tags werden alle Attribute der Relation nacheinander in entsprechender Reihenfolge aufgelistet. In dem Attribut "rdf:resource" steht dann der Name des Relationattributes.


Beispiel:


<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

                  xml:base=“http://datenbank.de/">

  <rdf:Seq rdf:about="Filme">

    <rdf:li rdf:resource="Name" />

    <rdf:li rdf:resource="Jahr" />

  </rdf:Seq>

</rdf:RDF>

Monday, November 24, 2008

Blatt 3

1.

a)

<element name=”kochbuch”>
  <complexType >
    <element name=”rezept” minOccurs=”1” maxOccurs=”unbound”>
      <complexType>
        <sequence>
          <element name=”rezepttyp”>
            <complexType>
              <attribute name=”name” type=”string” use=”required”/>
            </complexType>
          </element>
          <element name= “titel” type =”string”/>
          <element name= “zutat” type=“string“ minOccurs=”1” maxOccurs=”unbound”/>
          <element name= “arbeitsschritt” type=”string” minOccurs=”1” maxOccurs=”unbound”/>
            <complexType>
              <attribut name=”nummer” type=”short” use=“required“/>
            </complexType>
          </element>
        </sequence>
      </complexType>
    </element>
  </complexType>
</element>

b) 'int' ist auf 32 bit begrenzt, 'integer' jedoch "unbegrenzt".

c)

<complexType name=“person“>
  <sequence>
    <element name=“last“ type=“string“ minOccurs=“0“ maxOccurs=“unbounded“/>
    <element name=“first“ type=“string“/>
    <element name=”affiliation” type=”string”/>
  </sequence>
</complexType>

<element name =“bib“>
  <complexType>
    <element name=“book“ minOccurs=“0“ maxOccurs=“unbound“>
      <complexType>
        <sequence>
          <element name=”title” type=”string” use=”required”/>
            <choice>
              <element name=”author” type=”person” minOccurs=”0” maxOccurs=”unbound”/>
              <element name=”editor” type=”person” minOccurs=”0” maxOccurs=”unbound”/>
            </choice>
          <element name=”publisher” type=”string” use=”required”>
          <element name=”price” type=”string” use=”required”/>
        </sequence>
        <attribute name=”year” type=”year” use=”optional”/>
      </complexType>
    </element>
  </complexType>
</element>

2.

a)

1)
'5 heaviest buildings moved' liefert 'http://science.howstuffworks.com/heaviest-building-moved.htm' an erster Stelle.
2)
Ernest Hemmingway
'sportreporter sylvia beach' liefert 'content.grin.com/document/v18845.pdf' an erster Stelle.
3)
Jayne Mansfield
'künstler "im alter von 34 jahren" herzinfarkt' liefert 'http://www.steffi-line.de/archiv_text/nost_3filmusa/22_mansfield.htm' an erster Stelle.
4)
Phaidon Press Inc

'amazon stationary journal cartoonist' liefert 'http://www.amazon.com/Sempe-Journal-Stationery-Editors-Phaidon/dp/0714845507' an erster Stelle.

b) leider noch nicht fertig

Monday, November 17, 2008

Aufgabenblatt 2

1.
a)

- Kfz-Kennzeichen
- Steuer-Identifikationsnummer / social security number
- MAC-Adresse
- Personalausweisnummer
- PURL
- NBN (national bibliography number)
- ISSN (International Standard Serial Number)
- Das info-scheme wurde von der Library of Congress eingeführt um Publikationen etc. zu identifizieren. 'The most pressing need was to find a way to use URIs to reference information assets that have identifiers in public namespaces but had no representation within the URI allocation – for example, LCCNs.'
http://www.loc.gov/standards/uri/info.html
- RFC3966 - The tel URI for Telephone Numbers
http://www.faqs.org/rfcs/rfc3966.html
- RFC1521 - MIME (Multipurpose Internet Mail Extensions)
http://www.faqs.org/rfcs/rfc1521.html
- LDIF
http://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format

b)
identification = continent“.“country“.“address“.“name
address = city“_“zip“_“street“_“number
name = firstNames“_“lastName

Probleme:
- Unterschiedliche Adressschemata in unterschiedlichen Ländern
- Der Fall, dass eine Adresse auf zwei oder mehr Personen mit gleichem Namen zutreffen könnte, kann stets auftauchen, da kein weltweites Identifikationsnummernsystem für Personen existiert. Namen sind nicht eindeutig. Ausweis- und Sozialversicherungsnummern sind nicht international standardisiert.

Fazit: Realisierung nur begrenzt möglich und unter starken Annahmen bezüglich der Einzigartigkeit.

c)
http://identification (1.b))

d)
URI- Dubletten:
Hashtabelleneintragsvergleiche können aufgrund Speicherbeschränkungen nicht endlos durchgeführt werden.


Webseitendubletten:
Der Inhalt muss jeweils komplett gelesen und dann mit jedem bereits besuchten Dokument verglichen werden, was wiederum Unmengen an Zeit- und Speicherverbrauch mit sich zieht, da jedes Dokument komplett heruntergeladen und gespeichert werden muss.

Um festzustellen, dass zwei Dokumente identischen Inhalts sind, müssen sie erst komplett heruntergeladen werden und komplett 'gecrawlt' werden. Dann ist est für Optimierung schon zu spät.

2.
a)

http://myhpi.de/~martin.konarski/hcard.html

b)

http://maps.google.com/maps?q=http%3A//suda.co.uk/projects/microformats/geo/get-geo.php%3Ftype%3Dkml%26uri%3Dhttp%253A//myhpi.de/%257Emartin.konarski/hcard.html

3.
a)

Das Wurzelelement dieser DTD ist "kochbuch", welches mindestens aus einem "rezept" besteht. Ein "rezept" wiederum kann genau einen "rezepttyp" und genua einen "titel" besitzen, muss aber zumindest eine "zutat" und einen "arbeitsschritt" haben. "titel", "zutat" und "arbeitsschritt" besitzen vom Parser betrachtete Zeichenketten, während der "rezepttyp" keinerlei Zeichenketten beinhaltet und daher ein leeres Element ist. Ein "arbeitsschritt" besitzt zwingend eine "nummer", die durch eine Zeichenkette repräsentiert wird. Ein "rezepttyp" besitzt zwingend zwingend einen "namen", welches ebenfalls durch eine einfache Zeichenkette repräsentiert ist.

b)
Die XML-Datei ist nicht konform, da die in dem Element "rezept" angegebene Reihenfolge in der Liste der Unterelement nicht eingehalten wurde. In der DTD steht "zutat" vor "arbeitsschritt" in der Liste, während im XML zuerst der "arbeitsschritt" "Chillis zugeben" vor den einzelnen "zutaten" auftaucht. Ansonsten ist die XML-Datei zur DTD konform, da sämtliche Besonderheiten (Häufigkeiten der Elemente, leeres Element, Zwangsangabe eines Attributs) eingehalten wurden.

4.
a)

In welchem Film aus den siebziger Jahren stirbt der Protagonist ohne Vornamen am Ende in einem weißen Auto?

Vanishing Point -> http://www.youtube.com/watch?v=ySfbocEAmcs

Welches Nagetier kann länger als ein Kamel ohne Wasser auskommen?

Ratte -> http://www.nickfessler.com/Wisdom/32_Unknown_Facts.html

Zwischen welchen beiden Internetkritikern von Unterhaltungsmedien vergangener Tage brach im April 2008 eine 'Beschimpfungsfehde' aus?

Angry Video Game Nerd & Nostalgia Critic -> http://www.cinemassacre.com/new/?p=252

b)

http://myhpi.de/~martin.konarski/crawler.jar

Monday, November 10, 2008

Lösungen Blatt 1

1.
a)
1. Anzahl der Webadressen / Dokumente
- wenn alle Adressen / Dokumente bekannt wären, dann wäre somit das gesamte Web erfasst
- es ist unmöglich alle zu erfassen
- die ermittelte Größe berücksichtigt keinerlei Inhalte von Seiten, sie macht eine Aussage über die Struktur und Komplexität des Webs

2. Größe der Gesamtdatenmenge
- gleiches Problem wie a) 1. , unmöglich zu ermitteln, jedoch wäre logischerweise das gesamte Web erfasste
- wieder erhielte man “nur“ ein sehr große Zahl, die zwar sicherlich sehr beeindruckend wäre, jedoch nicht weiter interessant

3. Anzahl der Teilnehmer
- unmöglich zu messen
- macht keinerlei Aussage über die Größe des Webs an sich
- auch hier, lediglich große Zahl

4. Anzahl der registrierten Domains
- gibt keine Aussage über wirkliche Anzahl der Dokumente und Unterseiten hinter der Domain
- im Vergleich zu den anderen Größen relativ einfach zu ermitteln → Domains müssen registriert sein.
- Seiten ohne Domainnamen werden jedoch ignoriert und registrierte Domains können unbenutzt sein

b)
1. Umsetzung durch Webcrawler. Je größer die Anzahl der Webseiten wird, desto mehr Speicher und CPU Zeit wird benötigt. Durch sich ständig ändernde Inhalte recht ineffizient.

2. Ähnlich wie b) 1. durch Webcrawler, der die Größe aller Dokumente / Dateien speichert.

3. unmöglich zu messen

4. registrierte Domains zählen

c) Probleme eines Webcrawlers:
- benötigt viel Speicherplatz und muss um effizienter zu arbeiten hochgradig parallel laufen
- muss Ringverweise erkennen, was bei der großen Datenmenge schwierig werden kann bzw. bei ungenügendem RAM sehr langsam
- passwortgeschützte Seiten können nicht durchsucht werden
- Links können kein Ergebnis liefern, da z.B. die Adresse nicht mehr existiert, der entsprechende Server gerade offline oder einfach nur sehr langsam ist.
- Seiten die nicht von anderen Seiten verlinkt sind werden nicht gefunden. Es kann passieren, dass nur eine sehr kleine, abgeschlossene Teilmenge von Seiten gefunden wird, z.B. es wird auf einer Seite begonnen, die keine externe Seite verlinkt.
- Neue Inhalte auf schon durchsuchten Seiten können neue Suche nötig machen
→ ständige Aktualisierung wäre nötig. Könnte behoben werden indem Suchmaschine von der Seite informiert wird, dass neue Inhalte hinzugekommen sind.

d)

/**
*
*/
package uebung1;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WebCrawler {

// initial pages
private final static String[] PAGES = new String[] { "http://www.web.de" };

// mapping from URL to crawled or not
private Map pages = null;

private String currentPage = null;

private int errorCount = 0;

private long start = 0;
private long end = 0;

/*
* Probleme: -relative pfade zusammenbasteln...de/test/ kann auch ein Blatt
* sein, d.h. relativer Pfad existiert nicht
* (http://www.hpi.uni-potsdam.de/meinel/projects/lock-keeper/meinel/research.html)
* -keine BerŸcksichtigung von anderen Dateiformaten...pdf, .mpg usw.
* -verschlŸsselte Seiten -passwortgeschŸtze Seiten -mit captchas geschŸtzte
* Seiten -verschiedene URLs verweisen auf die gleichen Seiten
*
*/

/**
*
*/
public WebCrawler() {
pages = new HashMap();

for (String page : PAGES) {
pages.put(page, false);
}

start = System.currentTimeMillis();

while (pages.containsValue(false)) {
for (String key : pages.keySet()) {
if (!pages.get(key).booleanValue()) {
currentPage = key;
break;
}
}
getPage(currentPage);
pages.put(currentPage, true);
}
}

/**
* Builds up a connection to a page and reads it.
*
* @param page
*/
private void getPage(String page) {

try {
URL url = new URL(page);
URLConnection urlConn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
urlConn.getInputStream()));

String inputLine;
while ((inputLine = in.readLine()) != null) {
getUrlsFromPageContent(inputLine);
}

in.close();
} catch (Exception ex) {
System.out.println("Fehler beim Lesen aufgetreten: " + ex);
pages.remove(page);
errorCount++;
}
}

/**
* Collects urls from a given html-string.
*
* @param html
*/
private void getUrlsFromPageContent(String html) {

// define regular expression
Pattern p = Pattern.compile("<a.*?href=\".*?\".*?</a>");
Matcher m = p.matcher(html);

while (m.find()) {
String htmlPart = html.substring(m.start(), m.end());
int indexOfFirstQuotation = htmlPart.indexOf("\"") + 1;
String url = htmlPart.substring(indexOfFirstQuotation, htmlPart
.indexOf("\"", indexOfFirstQuotation));

// handle relative paths
if (!url.startsWith("http") && !url.startsWith("ftp")) {
// do not handle the relative paths in case the current page is
// a "leaf"
if (currentPage.contains("htm") || currentPage.contains("php")) {
continue;
}
if (url.startsWith("/")) {
if (currentPage.endsWith("/")) {
url = url.substring(1);
}
} else {
if (!currentPage.endsWith("/")) {
url = "/" + url;
}
}
url = currentPage + url;
}

// add new URL
if (!pages.containsKey(url)) {
pages.put(url, false);

int size = pages.size();
if (size % 100000 == 0) {
end = System.currentTimeMillis();
System.out.println((end - start) / 1000
+ " seconds; found pages: " + size
+ "; error count: " + errorCount);
System.out.println(currentPage);

// serialize pages in order to determine size of data
// structure
// try {
// ObjectOutputStream out = new ObjectOutputStream(
// new FileOutputStream("data.out"));
// out.writeObject(pages);
// out.close();
// } catch (IOException ex) {
// System.out.println(ex);
// }
}
}
}
}

/**
* @param args
*/
public static void main(String[] args) {
new WebCrawler();
}

}


- 100.000 Seiten ausgehend von www.web.de erfasst, allerdings ist die Gültigkeit/Erreichbarkeit der Seiten noch nicht sicher
Dauer: 5 min
Größe der verwendeten Datenstruktur: 42,3 MB Speicherplatz für die auf der
Festplatte abgelegte serialisierte HashMap
- 10^12 Seiten
5 min * 10.000.000 = 95,13 Jahre
42,3 MB * 10.000.000 = 423 TB

2.
a)
– Um die goldene Toilette benutzen zu dürfen.
– http://wcar.alrc.net/mainfile2.php/For+the+negative/8/
– lam sai wing hongkong 1000 dollars
– 6
– 5 min

b)
– Da Berufstätigkeit bei Frauen strikt auf die Zeit vor der Ehe beschränkt war.
– http://de.wikipedia.org/wiki/Fräulein#Anrede_.E2.80.9EHerr.E2.80.9C_vs._.E2.80.9EFrau_oder_Fr.C3.A4ulein.E2.80.9C
– lehrerin fräulein wiki
– 1
– 0 min

c)
– Tadschikistan
– http://www.imf.org/external/np/sec/nb/2000/nb0097.htm
– currency reform 2000
– 3
– 5 min inkl. Check auf wikipedia mit 'Somoni'

d)
– Hawaii
– http://distancecalculator.globefeed.com/World_Distance_Calculator.asp
http://de.wikipedia.org/wiki/Bundesstaat_der_Vereinigten_Staaten
– botswana us state distance
– 3
– 10 min (testen von Washington, Kalifornien und Hawaii)

e)
– Tycho Brahe
– http://de.wikipedia.org/wiki/Tycho_Brahe?title=Spezial:Booksources&isbn=3518369903
– hamburg-wandsbek harnverhaltung
– 2
– 1 min

f) Schwierigkeit:
- sich in den Kopf von Leuten versetzen, die über das Thema schreiben, um gute Suchworte abzuleiten,
- Suchmaschine kann Zusammenhänge der Suchworte nicht erkennen und sucht stur nach Übereinstimmungen in Dokumenten, jedoch nicht deren Bedeutung

3.
a)
- Aktualität: Sind die Treffer (tages-)aktuell? Es sollten beispielsweise keine veralteten oder überholten Antworten kommen.
- Abdeckung: Wird wirklich jede mögliche Seite (das 'gesamte Internet') durchsucht? Die beste Suchmaschine nützt nichts, wenn sie nur zwei Seiten kennt und meine gesuchte Information auf einer dritten steht.

(Wichtiger als objektive Qualität ist aber eigentliche die subjektive Qualität. Habe ich gefunden, was ich gesucht hab?)

b)

Eine Möglichkeit die Mächtigkeit einer semantischen Suchmaschine zu zeigen ist die Verwendung von natürlicher Sprache zur Suche. Eine weitere Möglichkeit ist das finden von Informationen durch Eingabe von Synonymen der Informationen.