-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
55 lines (43 loc) · 1.53 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Semantic is a Ruby library for dealing with RDF, RDF(s) and related Semantic Web
languages and technologies.
Semantic is written in the Ruby Way because even when dealing with RDF(s)
constructs, Ruby should still feel like Ruby and not at all like XML.
Take the sample model in this presentation:
http://www.cs.rpi.edu/~puninj/XMLJ/classes/class8/slide35-0.html
http://www.cs.rpi.edu/~puninj/XMLJ/classes/class8/slide36-0.html
In Semantic, this should be written like this:
module AcademicExample
namespace "http://www.cs.rpi.edu/~puninj/XMLJ/course_schema.rdf"
# rdfs:Class Person -> rdfs:subClassOf Resource
class Person < Rdfs::Resource
comment "Person Class"
end
class Student < Person
comment "Student Class"
end
class Teacher < Person
comment "Teacher Class"
end
class Course < Rdfs::Resource
comment "Course Class"
property :teacher, :range => Teacher # implicit domain
end
property :name do
comment "Name of a Person or Course"
domain [ Person, Course ]
range Rdfs::Literal
end
property :students do
comment "List of Students of a course in alphabetical order"
domain Course
range Rdf::Seq
end
end
include AcademicExample
Course.new("csci_2962") { |c|
c.name = "Programming XML in Java"
c.teacher = Teacher.new("jp") { |t| t.name = "John Punin" }
c.students << Student.new("er") { |s| s.name = "Elizabeth Roberts" }
c.students << Student.new("gl") { |s| s.name = "George Lucas" }
c.students << Student.new("js") { |s| s.name = "John Smith" }
}.to_xml