Index - RDF output (DKR+AA)

November 10, 2006

Improved: Referring to a concept/relationship in an ontology

Back in May, I was trying to figure out how to best refer to a concept/relationship in an ontology.

This morning I found some documentation that answers the question. Check out the Class Hierarcy Example. It takes an OWL file [ original link ] as input, then reads it in to a model then it can do whatever the programmer wants with that information. In this simple example, it prints it.

I took the liberty of taking a copy of the code for myself. It originally appears here, but am keeping a permanent/stale copy for my notes here:

Posted by Frozone Permalink on November 10, 2006 01:24 PM | Comments (0)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



July 11, 2006

Using Vocabularies in JENA

In the JENA example I've worked through, they use an ontology about an electronic business card, aka vCard.

I've programmed my agents (see 'Summoning pet agents') to build up a model of their episodic memory (i.e. recording interactions that they have with each other.) When they terminate, they write this memory to an RDF file. At present, Hermione's output looks like the following after an interaction with Crookshanks followed by another interaction with Ron:

< rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#" >
< rdf:Description rdf:about="http://localhost:1099/JADE/Crookshanks">
< vcard:FN>Value of Counter-Example at http://www.activemath.org/~cullrich/oio/CounterExample.html< /vcard:FN>
< /rdf:Description>
< rdf:Description rdf:about="http://localhost:1099/JADE/Ron">
< vcard:FN>Value of Counter-Example at http://www.activemath.org/~cullrich/oio/CounterExample.html< /vcard:FN>
< /rdf:Description>
< /rdf:RDF>

So, I guess I've figured out how to do 1 part of the RDF triple, namely, to record the URI of the other agent I've just interacted with. (ex. http://localhost:1099/JADE/Crookshanks and http://localhost:1099/JADE/Ron)

Next, I would like to figure out how to replace the vCard ontology with a pedagogical ontology. Following that, I need to figure out what to put in as the value of the ontology reference.

I see it as a positive step that now that I'm in the process of defining "how", I'm being forced to better evaluate "what". This is rather backwards software engineering -- I have been taught that implementing first and designing later is bad -- but, the circular nature of this discovery-project really requires that after I experience the nature of the implementation, I can re-think the design and go back to improve its flexibility. In a sense I've already designed the thing and have moved into implementation, but am now driven to run through another iteration after I've gained some experience. Coool. I do believe I've just experienced "iterative development" as I first learned of it back in Comp. Sci. 370.

'Time to go figure out how to use different ontologies in JENA. I will amend this entry when I have some answers.

------ Later, same morning ---------

Hum. I just noticed that my Jena import statements are coming from Hewlett Packard (ex. import com.hp.hpl.jena.rdf.model.Model;) and the solution to my next problem comes from an IBM developer's library.

It is disconcerting for me to see academic material coming from commercial companies. Oh well. Unix was developed at AT&T Bell laboratories, after all. Thankfully, both IBM and HP are highly respectable organizations, so I am not worried about the quality of these findings.

Anyway. Here's my new output, with the vCard ontology having been replaced by the pedagogical ontology.

< rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://www.activemath.org/~cullrich/" >
< rdf:Description rdf:about="http://localhost:1099/JADE/Crookshanks">
< j.0:oio>Counter-Example.html< /j.0:oio>
< /rdf:Description>
< rdf:Description rdf:about="http://localhost:1099/JADE/Ron">
< j.0:oio>Counter-Example.html< /j.0:oio>
< /rdf:Description>
< /rdf:RDF>

It's very simple. See, for each "otherAgent" (ex. Ron or Crookshanks), you create them for storage like so:

Resource otherAgent =
model.createResource("http://localhost:1099/JADE/"+
replyFromOtherAgentMsg.getSender().getLocalName());

I'm retrieving the name of the "OtherAgent" using the JADE framework's methods for receiving a message from another agent and getting that other agent's name.

Next, you can describe whatever pedagogical interactions you had with that otherAgent by referencing the pedagogical ontology and the reference to the different concepts (ex. Counter-Example.html) like so:

otherAgent.addProperty(model.createProperty(
"http://www.activemath.org/~cullrich/oio"), "Counter-Example.html")

Next, I'll have to figure out how to tell what kind of pedagogical interactions that have actually occurred with the other agent. This borders on InstructionalPlanning, methinks.

Posted by Frozone Permalink on July 11, 2006 08:25 AM | Comments (0)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



July 01, 2006

Thinking about the system's RDF output

[See also my entry on May 13th 2006]

In my project, I've assumed that all agent-agent interaction data shall be represented in RDF statements. I have yet to elaborate on the nature of this output, but it would represent something to the effect of:

"Learning object A (annotated by its URI) was a useful CounterExample while I was working on Atoms in my personal instructional plan."

Note that both "CounterExample" and "Atoms" are referring to different - but particular - ontologies. The first learning object - "Learning object A" - is left wide open and may be a part of several of its own ontologies.

The CounterExample comes from a hand-picked ontology that my system will use for ALL pedagogical references. This will allow me to relate the RDF statements together according to their pedagogical significance relative to each other. Eventually one could use multiple pedagogical ontologies if you were to set up equivalence relationships, but that's a little too complex for me at this point.

The Atom comes from another hand-picked ontology. Whereas my pedagogical ontology will be the only one across my entire AIED system, the ontology about high school chemistry can change from online course to online course. It is used as an external curriculum that represents what all students are guided to learn thoughout their course and is referenced for tracking student progress. Additional supporting ontologies may be used as well (ex. if the student needs additional help in Grade 12 chemistry, some curriculum may be pulled from the Grade 11 chemistry ontology or form some random tutorial website that has its own curriculum - whatever.) but in terms of evaluating the completeness of the course, I'd only be looking at the official curriculum ontology.

If the AIEd system were being used only for mild personal curiosity, such a curriculum would not be necessary. Since I'm employed by a school division, however, curriculum is rather on my mind and that's why it's creeped into my design. Who knows, maybe future generations will not need such things as curriculums. I, however, am rather traditional and will therefore insist upon the presence of a curriculum in my system. =)

Before I get too crazy about the sorts of data and when the IO happens, I'd like to figure out HOW agents even do IO for memory purposes. Do they save a buch of text files? Do they java.io.Serialize objects into secondary storage? Do they simply keep them in memory (yuck)? Is there a directory structure that can be generated to somehow organize their memory? Does each agent have its own database for memory? If so, can this, too, be serialzied and sent to another host as the agent moves around? I obviously need to read up on distributed computing and agent memory. How is it done?

Posted by Frozone Permalink on July 01, 2006 09:01 AM | Comments (0)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



May 27, 2006

Referring to a concept/relationship in an ontology

After reading about the ActiveMath system architecture, which I assume is using the instructional ontology I've been so excited about, I still don't know how extactly to refer to a concept or relationship in that ontology using a URI.

So, I've decided to make an assumption for now and to simply refer to the concepts by using the URLs for each item on the ontology's web page. For example:

Maybe I'm right, or maybe I'm totally out to lunch, but this will do for now.

Posted by Frozone Permalink on May 27, 2006 10:50 AM | Comments (0)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



May 20, 2006

Types of 'Ecological' data

I was thinking about Issues in generating RDF data from interactions with learning objects and about how there appear to be 2 kinds of RDF data attached to a particular object:

  1. self-described RDF data - perhaps an indication of where it itself believes it fits into various ontologies
  2. RDF data that is attached as a result of interactions with that object

Both types would look the same and would draw from all of the same ontologies and sets of URIs, so really there is no reason to explicitly represent a difference between the two. Or is there? Wouldn't an object's own self-declaration as its part in an ontology be extremely valuable to kick-start its usefulness? Because, without the self-declaration of its own content and purpose, it would be harder to make use of the object under another learning context.

Meh. I guess it doesn't really matter either way, but it was just a thought.

Cool - 'Just found a paper from Spain [Sicilia, García, Sánchez-Alonso, Rodríguez] called "Describing Learning Object Types in Ontological Structures: Towards Specialized Pedagogical Selection" that also organizes types of "objects" although I'd prefer to re-think of their classification scheme as to be applied to the sorts of RDF data that can be applied to one object. The classes they propose are:

  • Location: to help searches on large repositories
  • Composition: perhaps 'can be used to show other items that are part-of this one, or which "larger" items that this subject is an aggregate-of (Perhaps can be used for showing granularity of knowledge)
  • Sequencing: restricts navigation. (hehe. This would take care of my 'prerequisite relationship' concerns from yesterday.)
  • Personalization - modelling user preferences, pedagogically-oriented properties.

Okay. So, where can I get an ontology so I can start to refer to these different types of relationships?

Posted by Frozone Permalink on May 20, 2006 09:39 AM | Comments (2)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



May 13, 2006

Issues in generating RDF data from interactions with learning objects

I think that I may need some ontologies to describe educational relationships.

In the last episode, I decided to attempt to scrape an actual online course to see what the implications of building useful & usable RDF data would be. I positioned myself on page 3 of the ontology-discovery-using-hierarchichal-clustering paper, hoping to match up my RDF-generator with the sort of input used by the COBWEB ontology generator described in the paper.

I compared the two RDF documents:


What I've got: Generated by Piggy Bank




"The Ideal," from the Ontology Discovery paper by Clerkin, Cunningham & Hayes paper, page 3

My attainable triplet (first one) is in the format < subjectURI >< relationship >< value >. The second one also describes the same sort of triplet, only the syntax is more complicated; I think because it's using a specific ontology called "Description" with attribtue" Creator", where "Creator" is the relationship between the subject and the value.

At this point, my total inexperience with any RDF-based systems is becoming a problem. If I were learning this stuff at school, this is where the teacher would suggest that I so some excercises to practice writing RDF files using different kinds of ontologies so that I can get a better idea in my head of how it all fits together.

Back to the opening phrase of my blog, I think that I will need an ontology to describe rdf-relationships like:
- semantic network/core domain knowledge relationships: instantiation (is-a), aggregate (part-of)
- educational relationships: is-prerequisite-to
- knowledge levels: fact, analysis, synthesis
- maybe something to describe results of learner interactions with the various rdf-subjects
[Update: May 19th 2006, 9:18PM. Ah, perhaps this is obvious, but anfter some reading I have only just realized that each of these relationships woud be represented by its own URI. You would have to therefore find URIs for each of these different educational relationships. 'Credit wikipedia article about RDF for clarifying this for me.]

I'd imagine that there's got to be some ontology out there dealing with such things, but I'm totally lost. I've heard of something called the "Dublin Core Ontology" but I have no idea what it is, nor do I have any idea how to start looking for the kind of ontology that I need, nor do I know how to differentiate an "actual" well-used and accepted-by-standards ontology from an unprofessional or hacked-together ontology. I'm also going into a confused circle because at some level I'm trying to generate RDF data that is based on an ontology, and yet my guide-paper (Clerkin-Cunningham-Hayes) is talking about discovering the ontologies themselves.

I'm a little scared that I'm doing this sort of research by myself. It would be much smarter, I think, to enrol in the M.Sc. program at the U of S so that I can be around other scientists working on similar problems, but with my full-time job, I simply can't do it. I already come home exhausted every night as it is; given the space-time restrictions of being a human being in my position, it's not a feasible problem. Besides, I still love my job and I don't want to quit. But I want to be productive in this research project, too. Gah.

Oh well. lol.

It is time for me to cycle the laundry. I'll keep reading some more next time. Maybe I'll find an "Ontologies for Dummies" article somewhere.

Posted by Frozone Permalink on May 13, 2006 02:53 PM | Comments (0)
categorized under RDF output (DKR+AA)

This entry was written under the moon phase that looks like this:



Index to Steph's Notes

Feb. 24th 2007 - Weee! This new part of my website is not an entry, but rather a permanent fixture whose purpose is to "Look Down on All Those Notes With Some Grand Vision of Organization". Wish me luck. LOL
  1. Representing meta-data (fuel) & the different kinds of "hooks" that intelligent systems can use (how fuel is injected into the motor of the engine)
    1. Motivation: Semantic net / Rationalizable to a machine
      1. Semantic network
      2. Genetic graph
      3. Prerequisite AND/OR graph
      4. Constraint Satisfaction Problems
      5. Bayesian networks / causal graphs
    2. Technology & Philosophy: RDF, modus ponens,
      1. Predicates, Logic & situation calculus
        1. When in doubt, do some math
    3. What kinds of data? - What kinds of meta-data would an AIEd system possibly need, and how is it represented?
      1. task domain knowledge
      2. "is-prerequisite-to"-type knowledge
        1. Jackpot! A pedagogical ontology
      3. interactions with learning objects & other learners - (location, composition is-a/part-of, sequencing by restricting navigation, personalization, ontologies for LO context)
        1. Types of 'Ecological' data
      4. lesson plans, curriculum plans, practicing sessions (What is stored, what is generated on the fly? What is remembered?)
        1. Agent memory
    4. How to organize it - When is it stored in a database? Meta-data? Agent memory banks? Protocols? Repositories? XML files? Home-servers? WSDL services? Frameworks? Portable banks? P2P access?
      1. Database of object-agent interactions
      2. Concept of "Home" on a P2P network -- maybe the bulk of a learning object's usage data is on its home server and can be queried using WSDL or something ? Similar homes for each student's usage history, etc. Baggage problem.
    5. Links to the ontologies
      1. referring to a concept/relationship - ex. AgentOwl?
        1. Using Vocabularies in JENA
        2. Referring to a concept/relationship in an ontology
        3. Improved: Referring to a concept/relationship in an ontology
        4. Using OWL to reference constraints in tutoring systems
    6. Generation of this data
      1. Rationalization: For use by other AIEd systems
      2. What is generated - discuss items under part I.C.
      3. When it's generated - describe procedural model, which parts of the engine generate what (isa-part-of data, XML feeds, web services, meta data bout groups and collaboration, protocols, examples Friend of A Friend FOAF project)
        1. Thinking about the system's RDF output
      4. Technical notes of HOW it's generated: JENA, issues of implementation demo, my Hermione & Ron agent examples, lol
      5. Usage of this generated data - see part IV. A.
  2. Given the engine, who uses it?
    1. Students / Learners / "Me"
      1. instructional planning, student model, pre-requisites, tutoring, coaching, collaboration,constructivism
    2. Teachers / Educators / "Me"
      1. putting together lessons
      2. be able to browse through task domain knowledge in an objective / encyclopaedia format, then be able to pick-and-choose what you need for your students
      3. compose examples, design explanations, pull together diagrams, learning objects, etc. Haystack Relo?
    3. Administration / Governement / Structure / Crowd Control
      1. as restrictions/obstacles/sand pit to the robot in agent environment
      2. can't just have a swarm of students and teachers out there -- need structure of courses, curriculum, objectives, requirements (at least, we do in this day and age!) - Report cards, evaluation, feedback
      3. government, marks, certificates, requirements, funding, curriclum, attendance, delinquent, non-attending, motivation
      4. school''s images, goals, strengths, payroll, HR, security, accounts, permissions, privacy
      5. registration, failed courses
  3. User Environment -- How does this engine work? What does the user see on the screen?
    1. Introduction - Given a background in educational psychology, how does the system present itself -- what does the user see, and were does this data come from? Links to thoughts from part I.)
    2. Task Domain Browsing - Suppose you're you're just idly browsing through the "raw" content. How would it look when it's not wrapped around a learning-context or lesson or tutorial or anything. 'Cross between browsing a raw task domain ontology and browsing a learning object repository.
      1. Cleaning up the data -- Visualizing the data for humans to pick through the task domain and work on it. Suppose the "Subject Expert" discovers an advancement in science and needs to update the "world's" domain knowledge. (I used the "Subject Expert" terminology from Ontologies to Support Learning Design Context - Thanks Chris) How would they make corrections to ontologies and learning objects, or at least point the users of "old" objects towards adopting the newer ones.
      2. "Modes" - Learning & Lessons / Checklist - Homework, Assignments, Courses being taken / Collaborative mode / Teaching mode / Calendar- email -adminisrative mode -- See also the different kinds of scenarios in the ActiveMath system
        1. Educating myself about Education
  4. Evolution of this engine
    1. target some key implementation hooks discussed in part I - design an experiment/demo
      1. scrape a page - (Note, scraping can only give objective data, not in-context dat)
      2. LO repository - related to browsing the task domain?
      3. a learners "To Do" list - where does it come from? Assignments, courses.
      4. sample group scenario
      5. sample teacher lesson planning
      6. sample data "left behind"
      7. sample use of that data
    2. Data mining (for what? lol )
      1. discovery / generation of ontologies - when do you need to hunt for them, and when do you have to have a solidly-known & predictable ontology?
        1. Ontological Engineering: taking a first bite
    3. I/O - where it happens, which languages, protocols, which agents perform i/o and when, precepts, actuators
      1. Role Assignments
        1. Levels of authorization in web applications
      2. My Environment Adapts to me
        1. Displaying feedback from the server on JSP pages (Software engineering considerations)
        2. Sketching out a design (Content planning vs. Delivery planning)
      3. agent negotiations / social structures / ummm... Web 2.0 ?
        1. Towards student modelling
        2. Anatomy of an agent
    4. garbage collection of meta data
      1. Artificial Intelligence & Evolution
        1. Memory Culling: Necessary part of intelligence? (artificial or human)
        2. Applications for the Genetic/Evolutionary algorithm
      2. open learning environments
  5. Agents, pets, grouping, Community modelling
    1. Protocols - finding groups, cyber dollars, state diagrams (?)
    2. "Community Studies" - graphs & communication hubs, types of communities (free-for-all, hierarchy of authority, etc.)
    3. implications of joining a community - what do you share, which parts of your student model are relevant
    4. Walls & sand traps -- deliberate restrictions as problem-solving for learning
    5. Communication channels - individual-to-individual, individual-to-community, chat channels, agent-only "administrative" communications, ex. requests for related learning objects in a particular community, etc.
  6. Educational/Pedagogical focus (this part probably shouldn't be its own section but rather incorporated into the whole picture, but it's separate for me right now because I'm still only just starting to learn about it.)
    1. Semantics - what there is to talk about in Education
      1. ex. Merril's First Principles of Instruction, linking educational terms to AI terms
        1. Educating myself about education
    2. Pedagogical skills for tutors -- supporting human *and* artifical tutors
      1. Modelling teaching strategies
      2. What is teaching?
      3. Decision theory for teaching strategies
      4. My pedagogical issues
      5. Ontological comparisons as spatial relationships
    3. Student modelling - what the machine needs to know about the student, pedagogically-speaking, about learning history/preferences
    4. Roles - Simulated students, Coaches, Tutors, Teachers,