Code Monkey home page Code Monkey logo

minecraft-wiki-parser's Introduction

Einleitung

Die Domain "http://minecraft-item-resolver.mc" basiert auf den Rezepten und Gegenständen (Items, bzw. Blocks) aus dem Videospiel Minecraft. Minecraft ist ein Survivalspiel in dem das Crafting, also das Herstellen von Gegenständen, mithilfe eines 3x3 Feldes, in das die Zutaten gelegt werden können, erfolgt.

Craftingtable 3x3

Hierbei wird zwischen zwei Arten von Rezepten unterschieden. Es gibt die sogenannten "Shapeful Recipes" und "Shapeless Recipes". Der Unterschied zwischen den beiden Rezeptarten ist die Anordnung der Gegenstände im Crafting-Bereich. Shapeful Recipes fordern eine bestimmte Anordnung der Gegenstände um einen neuen Gegenstand herzustellen. Shapeless Recipes hingegen fordern keine bestimmte Anordnung.

Beispiel Shapeful Recipes

Bed

Das Bild zeigt das Rezept zur Herstellung eines Bettes, für das 3x Holz und 3x Wolle benötigt werden. Die Wolle muss zwingendermaßen über den Holz platziert werden, da das Rezept dies fordert.

Beispiel Shapeless Recipes

Es gibt nur wenige Shapeless Recipes in Minecraft, eins davon ist "Pilzsuppe":

Mushroom Stew

Es spielt bei Shapeless Recipes keine Rolle, wo sich ein Gegenstand im Crafting-Bereich befinden. Das bedeutet, dass sowohl die Pilze als auch die Suppenschüssel in jedem Platz liegen könnten, das Ergebnis ist immer das gleiche.

Ausgabemenge

In beiden Beispielen erhält der Spieler nur einen neuen Gegenstand, es gibt jedoch Rezepte, durch die der Spieler mehr als einen Gegenstand erhält. Legt man beispielsweise einen Eisenbarren in den Crafting-Bereich, so erhält man 9 Eisennuggets. Diese Ausgabemenge wird in der Domain als "outputAmount" angegeben.

Minecraft-Wiki Parser:

Die Grundlegenden Informationen sowie die Rezepte der Gegensände wurden mithilfe eines selbst entwickelten Parsers automatisch generiert. Daher gibt es eine hohe Anzahl an Tripeln. Der Parser ist im öffentlichen Github Repository https://github.com/lage2104/minecraft-wiki-parser einsehbar. Als Quelle verwendet der Parser die Minecraft Wiki. Informationen zur Einrichtung und Verwendung befinden sich am Ende des Dokuments.

Weitere Herstellungsmöglichkeiten

Der Wiki-Parser extrahiert lediglich die Rezepte für den 3x3 Crafting-Bereich. Es gibt jedoch noch etliche andere Wege bestimmte Gegenstände herzustellen. Eine möglichkeit ist das Einschmelzen von beispielsweise Eisenadern. Hierfür gibt es einen Ofen, der nur einen Platz für ein Eingabegegenstand hat, dieser wird dann mithilfe von beispielsweise Kohle oder einem anderen brennbaren Stoff eingeschmolzen und man erhält Eisenbarren. Dieser Prozess wird in der Domain auch dargestellt und wie jedes andere Rezept behandelt. Dabei wird die Unterklasse "smeltingRecipe" verwendet. Das Smelting Recipe wurde für folgende Gegensände hinzugefügt:

  • mc:iron_ingot
  • mc:gold_ingot

Bezug zu echten Gegenständen

Die Property "realWorldObject" enthält eine Verlinkung zu einem Artikel in der DBPedia, der den realen Gegenstand darstellt. Auch diese Information kann der Wiki-Parser nicht extrahieren, jedoch wurde sie für foglende Gegensände manuell ergänzt:

  • mc:iron_ingot
  • mc:gold_ingot
  • mc:diamond
  • mc:oak_log
  • mc:cauldron
  • mc:lapis_lazuli
  • mc:dirt
  • mc:map
  • mc:minecart

Anfragen

Die Anfragen befinden sich im Verzeichnis "queries".

Anfrage 1 - allItems

Ermittelt alle verfügbaren Items innerhalb des Triple Stores

Anfrage 2 - oneItem

Ermittlet Informationen zu einem, in der BIND-Funktion angegebenen, Item.

Anfrage 3 - recipe

Ermittelt alle Rezeptbestandteile auf erster Ebene eines Items.

Variante a

Alle Informationen werden unformatiert ausgegeben.

Variante b

Teil a

Ermittelt Metadaten zu einem Item (Rezepttyp, Ausgabemenge)

Teil b

Stellt ausschließlich Informationen zu den Rezeptbestandteilen auf erster Ebene dar.

Variante c

Mithilfe von zwei Subqueries (Kombination von Variante ba und bb) zur "formatierten" Darstellung.

Anfrage 4 - item occurrences

Ermittelt die Anzahl der Vorkommen eines Items in allen Rezepten. Mehrfache Aufkommen eines Items innerhalb eines Rezeptes werden (absichtlich) nicht gezählt.

Anfrage 5 - craftableItems

Variante a

Ermittelt alle Items in deren Rezept das angegebene Item in erster Ebene vorkommt.

Variante b

Ermittelt alle Items in deren Rezept das angegebene Item ab der ersten Ebene vorkommt.

Anfrage 6 - essential elements

Ermittelt alle Items die für die Umsetzung eines Rezeptes notwendig sind. Für jedes Element aus einem Rezept wird wiederrum das Rezept ermittelt.

Im Beispiel "mc:bookshelf" ist das Ergebnis:

  • mc:oak_log
  • mc:sugar_cane
  • mc:rabbit_hide

oak_log wird benötigt um oak_planks herzustellen, die im Rezept für bookshelfs vorkommen. sugar_cane wird benötigt um Papier(mc:paper) hezustellen, das benötigt wird um Bücher herszustellen, die im Rezept für bookshelfs vorkommen. rabbit_hide wird benötigt um Leder(mc:leather) herszustellen, das benötigt wird um Bücher herzustellen, die im Rezept für bookshelfs vorkommen.

Installation Wiki-Parser

  1. Beautifulsoup für Python installieren
pip install beautifulsoup4
  1. Requests für Python installieren
pip install requests
  1. lxml für Python installieren
pip install lxml
  1. Fetches all item information from https://minecraft.gamepedia.com/Minecraft_Wiki and stores it locally. Stores data.json with parsed information.
python3 parser.py --init
  1. Create ontology ttl file from data.json. Static information from header.ttl and addidtional.ttl are included.
python3 ontology.py

minecraft-wiki-parser's People

Contributors

janquintus avatar lage2104 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.