Class: RdfInference

Inherits:
Object
  • Object
show all
Defined in:
lib/rdf_inference.rb

Instance Method Summary collapse

Constructor Details

#initializeRdfInference

Returns a new instance of RdfInference.



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
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/rdf_inference.rb', line 8

def initialize
	prefix = "PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
	PREFIX rdfs: 	<http://www.w3.org/2000/01/rdf-schema#>
	PREFIX wdc:    <http://vieslav.pl/csv/0.1/>
	PREFIX owl:  <http://www.w3.org/2002/07/owl#> \n"
	@query_list = {}

	@query_list[:subClassOf] = prefix + "CONSTRUCT {?r rdf:type ?B .}  
	WHERE { ?A rdfs:subClassOf ?B .
	?r rdf:type ?A .
	FILTER NOT EXISTS {?r rdf:type ?B}
	}" 
	@query_list[:subPropertyOf] = prefix + "CONSTRUCT {?x ?r ?y .}  
	WHERE { ?x ?q ?y .
	?q rdfs:subPropertyOf ?r .
	FILTER NOT EXISTS {?x ?r ?y }
	}"
	@query_list[:RDFS_Plus_TransitiveProperty] = prefix + "CONSTRUCT {?x ?p ?z .}  
	WHERE { ?x ?p ?y .
	?y ?p ?z .
	?p rdf:type owl:TransitiveProperty .
	FILTER NOT EXISTS {?x ?p ?z }
	}"

	@query_list[:WIDU_shortCut] = prefix + "CONSTRUCT {?x ?p ?z .}  
	WHERE { 
	?x ?p ?y .
	?y ?p ?z .
	?class1 wdc:shortCut ?class3.
	?x a ?class1 .
	?y a ?class2 .
	?z a ?class3 .
	
	FILTER NOT EXISTS { ?x ?p ?z }
	FILTER NOT EXISTS { ?y a ?class1 }
	FILTER NOT EXISTS { ?y a ?class3 }
	}"

	@query_list[:RDFS_Plus_inverseOf9] = prefix + "CONSTRUCT {?y ?q ?x .}  
	WHERE { 
	?p owl:inverseOf ?q .
	?x ?p ?y .
	FILTER (?p != owl:inverseOf)
	FILTER NOT EXISTS { ?y ?q ?x }
	}"

	@query_list[:RDFS_domain] = prefix + "CONSTRUCT {?x rdf:type ?D .}  
	WHERE { ?P rdfs:domain ?D .
	?x ?P ?y .
	FILTER NOT EXISTS { ?x rdf:type ?D }
	}"

	@query_list[:RDFS_range] = prefix + "CONSTRUCT {?y rdf:type ?D .}  
	WHERE { ?P rdfs:range ?D .
	?x ?P ?y .
	FILTER NOT EXISTS { ?y rdf:type ?D }
	}"

end

Instance Method Details

#inference(graph) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/rdf_inference.rb', line 68

def inference(graph)
	@rdfs_inferred = RDF::Repository.new
	@rdfs_inferred_all = RDF::Repository.new
	begin
		@rdfs_inferred = RDF::Repository.new
		@query_list.each do |klucz, query|
			puts klucz
			@rdfs_inferred << SPARQL.execute(query, graph)
		end
		graph << @rdfs_inferred
		@rdfs_inferred_all << @rdfs_inferred
		puts "Inference count:"
		puts @rdfs_inferred.count
	end	 until @rdfs_inferred.count == 0
	puts "Inference count all:"
	puts @rdfs_inferred_all.count
	@rdfs_inferred_all
end