Moving toward a university ontology

Tagged:  •    •    •    •    •    •    •  

For a variety of small to medium-sized projects (at least as things are measured here), I've needed to model bits of pieces of the elements of my university, University of Mary Washington. (For mini-examples, see here, here, and here. All require Firefox). For a while my approach to the model was very fragmentary, just squeezing in what I needed at the time, but lately I've started to work on getting a more general handle on it.

Here's an overview of what I have so far. At the heart of it is a distinction between two classes: Course and CourseManifestation. (Side note--the terminology gets annoying; when I use the word "class" I'm using it in the computer sciency way, as in "a class of objects," not "a class full of students studying Shakespeare"). Courses are more abstract and handle the administrative information -- what departments control the Course, what requirements it meets, etc. So a Course is something like "English 101".

CourseManifestations are the real-life groups of people who get together to study something. A CourseManifestation would be something like "English 101, section 03, Fall 07." CourseManifestations are thus groups of people (a subclass of foaf:Group, to be precise) who meet at particular times and engage in certain kinds of study. So in the ontology I'm also trying to model both the basics of where and when people meet, but also information about textbooks, topics, online resources, etc. that the teachers and students use. (The name CourseManifestation is inspired by the Functional Requirements of Bibliographic Records distinction between a Work and a Manifestation of that Work. See this handy guide for a description.).

From that core, I'm trying to model the various aspects of both. Here's a diagram of what it's aiming toward:

Click here for a big version.

I'm hoping to make it intersect nicely with a few key ontologies:

Geonames
CampusPlaces, at least on the level of buildings, should be able to nicely draw on geonames data, which will also offer a connection to DBpedia.
Bibo and FRBR
Info about the particular things that CourseManifestations study, and what they study with, should be able to connect well with data using these vocabularies. For example, they might study "The Canterbury Tales", a frbr:Work, and study it with "The Riverside Chaucer", a bibo:Document.
FOAF
The CourseManifestations, being a subclass of foaf:Group, make this connection obvious.
SIOC
Also among the tools that a CourseManifestation studies with are online sites of many kinds, which should connect to SIOC data.

Below you can download the current drafts in rdf/xml as exported from Protege and a slightly prettified version of the n3 from Protege. Or, skim through the n3 below.

Any comments or feedback are much appreciated. Thanks.

UPDATE

What follows is now outdated. Please check the project page to get the most recent rdf/xml

# Base: http://www.ravendesk.org/univ-ont#
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix univ: <http://www.ravendesk.org/univ-ont#> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://www.ravendesk.org/univ-ont>
a owl:Ontology ;
rdfs:comment "An ontology for describing courses at an educational institution. The approach here is heavily weighted toward universities."^^xsd:string .
######## CLASSES

####### Course and related classes

univ:Course
a rdfs:Class ;
rdfs:comment "An administrative designation for a course, e.g. English 101. The same course can have many different manifestations, usually denoted by section numbers and semesters."^^xsd:string ;
rdfs:label "Course"^^xsd:string .

univ:Dept
a rdfs:Class ;
rdfs:comment "A university department, usually an academic department, but not necessarily."^^xsd:string ;
rdfs:label "Department"^^xsd:string ;
rdfs:subClassOf foaf:Group .

univ:GraduationRequirement
a rdfs:Class ;
rdfs:comment "'Requirement' is, strictly speaking, a misnomer. It is really a possible requirement, as in \"English 101 fulfills a graduation requirement', even though other courses might fill the same bill. That is, a univ:GraduationRequirment is not an absolute. Most likely, implementations will create an instance of this class that is \"allGraduationRequirements\" and express the rest through univ:hasPartialGradReq and univ:meetsGradReq properties relating an institution-based assortment of univ:GraduationRequirements."^^xsd:string ;
rdfs:label "Graduation Requirement"^^xsd:string .

####### CourseManifestation and related classes
univ:CourseManifestation
a rdfs:Class ;
rdfs:comment "A manifestation of a Course. I.e., a group of teacher(s) and students during a particular term."^^xsd:string ;
rdfs:label "Course Manifestation"^^xsd:string .

univ:CourseManifestationType
a rdfs:Class ;
rdfs:comment "Types for Course Manifestations, e.g. \"Lecture\", \"Discussion\", \"Lab\", etc.. expressed as a resource"^^xsd:string ;
rdfs:label "CourseManifestationType"^^xsd:string .

univ:Term
a rdfs:Class ;
rdfs:comment "A term during which classes meet, like a semester, trimester, quarter, etc."^^xsd:string ;
rdfs:label "Term"^^xsd:string .

univ:CampusPlace
a rdfs:Class ;
rdfs:comment "A location on campus, usually a building and room. I should link this up with the geoname ontology and data."^^xsd:string ;
rdfs:label "Campus place"^^xsd:string .

####### PROPERTIES

######### Properties related to Courses

univ:meetsGradReq
a owl:ObjectProperty ;
rdfs:comment "The Course can be used to fulfill the object GraduationRequirement"^^xsd:string ;
rdfs:domain univ:Course ;
rdfs:label "meets GraduationRequirement"^^xsd:string ;
rdfs:range univ:GraduationRequirement .

univ:isPartOfGradReq
a owl:ObjectProperty ;
rdfs:comment "The subject GraduationRequirement is a part of a 'broader' object GraduationRequirement. For example, a \"MathMajor\" is a part of a broader \"Major\" requirement. Note that isPartOf does not imply a neccesary relationship. That is \"Major\" can have any number of parts, and none are 'required' in the strict sense of the word."^^xsd:string ;
rdfs:domain univ:GraduationRequirement ;
rdfs:range univ:GraduationRequirement .

univ:ownerDept
a owl:ObjectProperty ;
rdfs:comment "The Department which 'owns' the Course. I.e., it has administrative control over the Course."^^xsd:string ;
rdfs:domain univ:Course ;
rdfs:label "owner department"^^xsd:string ;
rdfs:range univ:Dept ;
owl:inverseOf univ:ownsCourse .

univ:ownsCourse
a owl:ObjectProperty ;
rdfs:comment "A Course the Department has administrative control over."^^xsd:string ;
rdfs:domain univ:Dept ;
rdfs:label "owns course"^^xsd:string ;
rdfs:range univ:Course ;
owl:inverseOf univ:ownerDept .

univ:prereqOf
a owl:ObjectProperty ;
rdfs:comment "The Course is a prerequisite of the object Course."^^xsd:string ;
rdfs:domain univ:Course ;
rdfs:label "prerequisite of"^^xsd:string ;
rdfs:range univ:Course .

univ:optionalPrereqOf
a owl:ObjectProperty ;
rdfs:comment "The subject Course is one of a group, any one of which must be completed satisfactorily before taking the object Course."^^xsd:string ;
rdfs:label "optional prerequisite of"^^xsd:string ;
rdfs:subPropertyOf univ:prereqOf .

univ:neccPrereqOf
a owl:ObjectProperty ;
rdfs:comment "The subject Course _must_ be satisfactorily completed before the object Course may be taken."^^xsd:string ;
rdfs:label "neccessary prerequisite of"^^xsd:string ;
rdfs:subPropertyOf univ:prereqOf .

univ:credits
a owl:DatatypeProperty ;
rdfs:comment "The number of credits the Course carries."^^xsd:string ;
rdfs:domain univ:Course ;
rdfs:label "credits"^^xsd:string ;
rdfs:range xsd:int .

univ:institution
a owl:ObjectProperty ;
rdfs:comment "The institution where the Course is taught."^^xsd:string ;
rdfs:domain univ:Course .

########## Properties related to CourseManifestations

univ:cmType
a owl:ObjectProperty ;
rdfs:comment "The CourseManifestationType of this CourseManifestation."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "course manifestation type"^^xsd:string ;
rdfs:range univ:CourseManifestationType .

univ:hasChildCourseManifestation
a owl:ObjectProperty ;
rdfs:comment "A CourseManifestation that derives from this CourseManifestation, as a Lab or a Recitation associated with a Lecture. The students in a childCourseManifestation is a subset of the students in a parent CourseManifestation."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "has child CourseManifestation"^^xsd:string ;
rdfs:range univ:CourseManifestation .

univ:hasParentCourseManifestation
a owl:ObjectProperty ;
rdfs:comment "The 'parent' CourseManifestation, as a Lecture is often the parent of a Lab."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "has parent CourseManifestation"^^xsd:string ;
rdfs:range univ:CourseManifestation .

univ:meetDay
a owl:DatatypeProperty ;
rdfs:comment "The days the CourseManifestation meets."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "meeting day(s)"^^xsd:string ;
rdfs:range xsd:string .

univ:meetPlace
a owl:ObjectProperty ;
rdfs:comment "The place where the CourseManifestation regularly meets."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "meeting place"^^xsd:string ;
rdfs:range univ:CampusPlace .

univ:meetTime
a owl:DatatypeProperty ;
rdfs:comment "The meeting time of the CourseManifestation. Right now a literal, but someday needs to be built into a more sophisticated structure."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "meeting time"^^xsd:string ;
rdfs:range xsd:string .

univ:partOfCampusPlace
a owl:ObjectProperty ;
rdfs:comment "A CampusPlace that physically contains the subject CampusPlace. Typically the relationship here is a room to a building. Buildings work well as geonames:Features, but rooms not so much."^^xsd:string ;
rdfs:domain univ:CampusPlace ;
rdfs:label "part of building"^^xsd:string ;
rdfs:range univ:CampusPlace .

univ:term
a owl:ObjectProperty ;
rdfs:comment "The term during which the CourseManifestation exists."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "term"^^xsd:string .

univ:teaches
a owl:ObjectProperty ;
rdfs:comment "A CourseManifestation that the person teaches. No differentiation is made about currently teaching, taught in the past, or will teach in the future. This property is intended to cover all those case."^^xsd:string ;
rdfs:domain foaf:Person ;
rdfs:label "teaches"^^xsd:string ;
owl:inverseOf univ:taughtBy .

univ:taughtBy
a owl:ObjectProperty ;
rdfs:comment "A teacher for the course."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "taught by"^^xsd:string ;
owl:inverseOf univ:teaches .

univ:studies
a owl:ObjectProperty ;
rdfs:comment "A topic or a work that is studied in the CourseManifestation"^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "studies"^^xsd:string .

univ:studiesTopic
a owl:ObjectProperty ;
rdfs:comment "A topic studied in the course, e.g. \"feminism\", \"Battle of the Bulge\", \"Quantum Chromodynamics\".. Ideally, the object is something in DBpedia."^^xsd:string ;
rdfs:label "studies topic"^^xsd:string ;
rdfs:subPropertyOf univ:studies .

univ:studiesObject
a owl:ObjectProperty ;
rdfs:comment "An object that is studied in the CourseManifestation, e.g., a galaxy, a molecule, a protein. Generally speaking, a science course will use univ:studiesObject while a humanities course will use univ:studiesWork."^^xsd:string ;
rdfs:label "studies object"^^xsd:string ;
rdfs:subPropertyOf univ:studies .

univ:studiesWork
a owl:ObjectProperty ;
rdfs:comment "A particular work studied in the CourseManifestation, e.g. Chaucer's \"Canterbury Tales\", the Codex Amiatinus, Faulkner's \"Absolom! Absolom!\", Madonna's \"Like A Virgin\", the Eiffel Tower, etc."^^xsd:string ;
rdfs:label "studies work"^^xsd:string ;
rdfs:range frbr:Work ;
rdfs:subPropertyOf univ:studies .

univ:studiesWith
a owl:ObjectProperty ;
rdfs:comment "A text or other resource that the CourseManifestation uses in its course of study. For example, if the CourseManifestation univ:studiesWork \"Beowulf\", it might univ:studiesWith \"Norton Anthology of Literature\"."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "studies with"^^xsd:string .

univ:studiesWithTool
a owl:ObjectProperty ;
rdfs:comment "A physical object (or type of object) used in the course of study, e.g., GPS device, electron microscope, Edirol, etc."^^xsd:string ;
rdfs:label "studies with tool"^^xsd:string ;
rdfs:subPropertyOf univ:studiesWith .

univ:studiesWithOnlineSpace
a owl:ObjectProperty ;
rdfs:comment "An online resource used in the course of study."^^xsd:string ;
rdfs:label "studies with sioc:space"^^xsd:string ;
rdfs:range sioc:Space ;
rdfs:subPropertyOf univ:studiesWith .

univ:studiesWithSoftware
a owl:ObjectProperty ;
rdfs:comment "A piece of software used in the course of study, e.g., Audacity, Protege, CamTasia, Mathematica, etc. For online software, use studiesWithOnlineSpace."^^xsd:string ;
rdfs:label "studies with software"^^xsd:string ;
rdfs:subPropertyOf univ:studiesWith .

univ:studiesWithText
a owl:ObjectProperty ;
rdfs:comment "A text that is used in the CourseManifestation, generally something that is ordered through the university bookstore, and so encompasses things like videos or CDs."^^xsd:string ;
rdfs:label "studies with text"^^xsd:string ;
rdfs:range bibo:Document ;
rdfs:subPropertyOf univ:studiesWith .

######## Other properties

univ:manifestationOf
a owl:ObjectProperty ;
rdfs:comment "The abstract, administrative Course that this is a manifestation of."^^xsd:string ;
rdfs:domain univ:CourseManifestation ;
rdfs:label "manifestation of"^^xsd:string ;
rdfs:range univ:Course ;
owl:inverseOf univ:hasManifestation .

univ:hasManifestation
a owl:ObjectProperty ;
rdfs:comment "A manifestation of the abstract, administrative course title."^^xsd:string ;
rdfs:domain univ:Course ;
rdfs:label "has manifestation"^^xsd:string ;
rdfs:range univ:CourseManifestation ;
owl:inverseOf univ:manifestationOf .

univ:inDept
a owl:ObjectProperty ;
rdfs:comment "The department the person belongs to."^^xsd:string ;
rdfs:domain foaf:Person ;
rdfs:label "in department"^^xsd:string ;
rdfs:range univ:Dept .

univ:hasPartialGradReq
a owl:ObjectProperty ;
rdfs:comment "The subject GraduationRequirement may be partially composed of the object GraduationRequirement."^^xsd:string ;
rdfs:domain univ:GraduationRequirement ;
rdfs:range univ:GraduationRequirement .

univ:metBy
a owl:ObjectProperty ;
rdfs:comment "A Course that meets, in part or in full, the subject GraduationRequirement."^^xsd:string ;
rdfs:domain univ:GraduationRequirement ;
rdfs:range univ:Course .

univ:grantsGraduationRequirement
a owl:ObjectProperty ;
rdfs:comment "The department is responsible for granting a GraduationRequirement, as the English Department is responsible for granting an English Major."^^xsd:string ;
rdfs:domain univ:Dept ;
rdfs:label "grants GraduationRequirement"^^xsd:string ;
rdfs:range univ:GraduationRequirement .

Project(s): 
AttachmentSize
univ-ont.rdf20.37 KB
univ-ont.n313.74 KB

Trackback URL for this post:

http://www.patrickgmj.net/trackback/120

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Is there any option to see the image as bigger?

BTW I forgot to mention that I am a college senior (Computer Science major), so I am talking about my goal for my senior research/implementation project that I will work on till I graduate in May (unless I impress the University so much that they hire me to finish it).

Lora

Hi, I am working on creating a web site that will be well-designed and helpful to students for searching through classes available for next semester in creating their schedules.
I have read a couple articles on the semantic web now, and I thought it would be cool the idea of searches that can return results based on more than just keywords but also through the understanding of terms with defined meaning. (although I understand that RDF and ontologies are also about better organizing data). For example, find "theology" classes that "Start" in the "afternoon", or find "English" "honor" classes.

Your 'Slice and Dice your Schedule' project site really caught my interest as it is very similar to the basic application I would like to create for my college (Xavier University in Cincinnati, OH) (btw Niklas pointed me towards your University Ontology).

I wanted to ask you, did creating the RDF/OWL ontology turn out to be helpful way to implement that 'slice and dice your schedule' site? Did you see advantages to it? Or in general, how does the information for the table and such get fill in, do you use SPARQL queries?

Like to hear your thoughts and any advice,
Thanks,
Lora

Hi Lora!

Thanks for stopping by (and thanks to Niklas for suggesting it)!

The ontology as it exists now is the result of a variety of projects that needed to organize university-related data, so it actually came after the implementation of 'slice and dice your schedule.' There were a few advantages I saw to using RDF. First, I knew that there would be many different kinds of data that I'd want to include, and that they'd be added in over time. Since RDF is designed for connecting different data sets, it seemed to make sense. It also made collecting the data easier, since I could use the Solvent, one of the many useful tools from SIMILE at MIT. It makes it easy to write a scraper to collect RDF data from a web page. I just went to the schedule of courses the university already has on the web, wrote the scraper with Solvent, and that collected up all the data.

The table is another SIMILE product, called Exhibit. Once you have an RDF graph, you can use Babel (also from SIMILE) to produce JSON data that Exhibit puts into the display. So in general, you might not even need to do SPARQL queries. In my case, I needed to massage some of the data around a bit, so I have some PHP scripts doing SPARQL queries and producing the JSON for Exhibit.

So I'd say definitely look up the tools from SIMILE, especially Exhibit and Solvent. Your project sounds really good--the sort of thing that can actually make the user-unfriendly lists of courses useful to students (what a concept!).

Good luck! And feel free to stop by again!
Patrick

Hi!

This looks very promising! It may come in handy for things I've been in contact with before (univiersities building up course catalogues, where I hinted at the usefulness of RDF, unfortunately not "on the map" for them at the time). As they often have some locally/nationally specific concepts/properties, using this as a base and then extend with those would be a possibility.

A suggestion is to use language literals for the label and comment values. xsd:strings are datatyped and thus cannot have a language tag, wheras values like "in department"@en are perfect for internationalization.

(I have also found it useful (e.g. when browsing data in Longwell) to define anonymous inverseOf properties with only a label; like:

univ:hasManifestation
owl:inverseOf [ rdfs:label "manifestation of"@en ] .

IIRC, TimBL suggested this approach some time ago, to have readable labels for properties without defining them "fully", in case an ontology user would be unsure of which relation is "most suitable" -- as determined by the author of the ontology. Of course, if you don't intend one of the directions to be "primary" (from a usage perspective, and possibly a mereological), your already fully spelled out inverseOf variants are very good indeed.)

Best regards,
Niklas

Niklas,

Ah! Thanks much! My lack of knowledge about the various local/national educational structures has been a real worry as I've tried to generalize this beyond just my school. If this ontology can be a base for that, that's ideal. Any way that I can tweak this to make that easier is even better.

And thanks also for the tip about the inverse properties; that's an approach I hadn't thought of, and I confess I've been struggling with the best way to handle things that seem to me to be inverses, but might in practice need to be more versatile, as you suggest (if I understand you rightly).

Thanks so much!
Patrick

Let me just say here what I was thinking in our meeting the other day. I'm glad you use your powers for good. :-)

Seriously, thanks for laying out this kind of information architecture (that's probably not the right term). In any case, I find it fascinating.

Jeff,
Thanks much. And I think that, generally speaking, "information architecture" is a pretty good term for it. It is certainly more accessible than RDF/OWL ontology!

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options