"Any medium powerful enough to extend man's reach is powerful enough to topple his world. To get the medium's magic to work for one's aims rather than against them is to attain literacy."
-- Alan Kay, "Computer Software", Scientific American, September 1984
University Ontology
Background
In my position as Instructional Technology Specialist at the University of Mary Washington, I have been involved in a number of projects that called for a systematic organization of information about courses and the tools used for teaching and learning. That's been especially true as more and more faculty become interested in blogging, social sites, and repositories of content.
At the same time, I have been connected to a variety of conversations and committees addressing, implicitly or explicitly, the needs for campus-wide information sharing. This ontology is intended as a first step toward using RDF to pull these converging needs and interests together.
Approach
Other ontologies for describing universities exist. The thing that, I hope, distinguishes this one is its emphasis on the tools used in the classroom. That way, the ontology should be able to model relationships between members of a university based not on the university's administrative organization, but rather on the concrete things that make up a teaching and learning environment. For example, by modeling the books used by a course, I hope that applications will more easily let faculty discover others who are teaching the same book, especially across departments. A real example of this was my surprise to discover that a course taught in the chemistry department was reading Frankenstein--but how would faculty in the literature department know about that interesting connection?
Goals
This project will, of necessity, come together in fits and starts, and will certainly be shaped in-process by the emerging projects throughout the university. That said, here is a sketch of what I hope to accomplish:
- Develop the ontology itself, especially to bring it into conformity with Semantic Web best practices and to be as complete a model as possible for the faculty needs.
- Develop small applications to facilitate data-gathering with the ontology:
- Help faculty capture information about their teaching with Zotero, then upload that information to share it.
- (Possibly) use emerging modules for Drupal and Wordpress to capture similar information.
- Capture SIOC data from blogs and other online spaces.
- Push the data out, either through a home-grown interface or through a content management system like Drupal
You can download the current version of the RDF file below
| Attachment | Size |
|---|---|
| univ-ont.rdf | 22.73 KB |
| univont-cleaned-2008-03-07.n3 | 15.99 KB |
| univ-ont-2008-03-10.rdf | 28.97 KB |
| univont-2008-07-24.n3 | 21.52 KB |
| univ-ont-2009-01-05.ttl | 25.81 KB |
| univ-ont-2009-01-15.ttl | 23.76 KB |

Comments
I think this ontology will
I think this ontology will really of great help to education institutes. Students will find it lot easy to know what teachers are going to learn, where they going to meet and the other tools.
Look also at the Kuali Student project?
Patrick,
Thank you for sharing this work!
You might also wish to take a look at the Kuali Student Project:
http://student.kuali.org/
This is a Mellon Foundation-funded project to develop administrative systems for higher education, in which the consortium's participants have had to define - at least some of - the same types of entities that are listed in your ontology. It may be interesting to review how they distinguish between these, name them, and define their relationships, relative to your model.
Best,
Aron
Where is the download?
where can you download the file, i look all over. can I download it. I hope to use the vocabulary in a school project.
thanks
Lora
BTW--a new revision should be coming up shortly
Lora,
I'm hoping to wrap up another small revision to the ontology in the next few days, and in a week or so I hope to get some feedback after I present it to some people, so there should be lots of changes coming up soon.
And...I'd love to hear about the project...is there info online about it?
Patrick
Been on your site before
Hi sorry wasn't sure if you would remember or not but I've been on your site
before (posted on your older page):
http://www.patrickgmj.net/blog/moving-toward-a-university-ontology
I am still basically researching Semantic Web technologies and try to create an RDF
model based on my university's class data (well a subset - the following fall semester and trying to limit to certain attributes that would be interesting for students who would be searching over the data).
I am trying right now to pull together data I got from school in comma-delimited files (since for security reasons, access to the school's Oracle database wasn't possible). Probably try to recreate into a database of my own. And then possibly using D2R http://www4.wiwiss.fu-berlin.de/bizer/d2rmap/D2Rmap.htm to match up relational database data into a RDF model (which I am writing in Jena).
I was recommended very early on to reuse an existing ontology to help SW grow I suppose and your ontology was one I came across early on and have kept in mind ever since. Since I am still early in creating my rdf model I will be back to check for your updated version.
Thanks
Lora
Hmm... what attributes?
Lora,
Ah! I should have remembered! I'm very interested in the attributes you mention. This ontology is really in early stages (but hopefully still useful!) to try to discover what kinds of class data it can and cannot model. The attributes you come up with might be very helpful to add in.
Good luck,
Patrick
PHP and SPARQL?
I remembered that before you mentioned that you wrote some PHP scripts doing SPARQL queries - how did you figure out how to do that (could you send me examples)? and are the SPARQL queries running against a RDF triplestore or a relational database?
("I have some PHP scripts doing SPARQL queries and producing the JSON for Exhibit."-old post)
As far as the attributes, basics like when the class meets (time), name, credits, taughtBy, etc that I plan to try to use from your ontology. Some I might add myself are 'CRN' -code use to indentify classes at my school, 'maxEnrol' - how many people can register for a 'course instance', similarly 'waitCap' - number of people can be on a waiting list to register for a 'course instance', 'meetTimeOfDay' indicates if 'course instance' is a morning, afternoon, or evening course, and there are others that also go with specific ways my university stores class data.
right now I am a little stumped if I should create a RDF model and work off that alone or create a RDF model that is abstracted over a relational database which will convert SPARQL queries to SQL queries on the fly (using D2RQ and D2R server possibly).
thanks for all your replies,
Lora
SPARQLing with PHP
In the past, I've mostly used RAP (RDF API for PHP) to set up a triplestore in a MYSQL database. It includes scripts that do all the setup--following the example has it up and running in less than 5 or 10 minutes. RAP also includes classes for doing the sparql queries. Basically, you create what RAP calls a MemModel (basically, an RDF graph in memory), write the SPARQL query string. So to make a subgraph of univ:CourseInstances with type and their titles:
$queryString = "
PREFIX rdf <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc <http://purl.org/dc/elements/1.1/>
PREFIX univ <http://www.ravendesk.org/univ-ont#>
CONSTRUCT {
?courseinst rdf:type univ:CourseInstance .
?courseinst dc:title ?title
}
WHERE {
?courseinst rdf:type univ:CourseInstance .
?courseinst dc:title ?title
}
";
$result = $model->query($queryString);
Then do what you will with the result. RAPs documentation here walks you through it.
I've also started to use the ARC2 PHP classes. SPARQLing with it works similarly, though I think so far it only supports querying against a store (i.e., not against an in-memory graph).
$result = $store->query($queryString);
See this for examples.
ARC2 is nice for being lighter weight, so less likely to hit memory problems, and if you are doing AJAXy things it serializes graphs to JSON for you.
On the abstraction question--sorry to say I can't offer much advice, having never used D2RQ or D2R. Since I don't have direct access to the database, I've just been scraping the data from the web page listing all the courses and info using SIMILE's Solvent, then pouring that data into either the RAP or the ARC2 store and running from there. If it is okay for your data to be a little out-of-date (depending on how often you re-scrape the page), this might be more straightforward. It's possible that our schools will be spitting out similar web pages, so if you email me at pgosetti-at-umw.edu I'll email you the script to see if it'll be helpful to use as a starting point.
And thanks for the info about attributes you'll use! That's exactly the kind of thing I'm curious about in how people might use this -- especially the waitCap and maxEnrol. In the latest version, I've split about univ:meetTime into univ:meetStart and univ:meetEnd -- you might be able to use those to derive the morning/afternoon/evening info if it is not explicit in your source data. Last note, and this might be crucial--our school also lists by CRN #'s. When I checked with our database people, it turned out that our CRNs are unique _within_ a semester, but not overall. That is, they're no good for creating unique URIs for different univ:CourseInstances (unless your model will be restricted to only one semester).
Good luck!
Patrick
Lora
Ooops! Many apologies--you should be able to download it now.
Post new comment