Class: RdfInference
- Inherits:
-
Object
- Object
- RdfInference
- Defined in:
- lib/rdf_inference.rb
Instance Method Summary collapse
- #inference(graph) ⇒ Object
-
#initialize ⇒ RdfInference
constructor
A new instance of RdfInference.
Constructor Details
#initialize ⇒ RdfInference
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# 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 . [ rdf:subject ?x; rdf:predicate ?r; rdf:object ?y ] a wdc:DerivationRelationship .} WHERE { ?q rdfs:subPropertyOf ?r . ?x ?q ?y . FILTER NOT EXISTS {?x ?r ?y } }" @query_list[:RDFS_Plus_TransitiveProperty] = prefix + "CONSTRUCT {?x ?p ?z . [ rdf:subject ?x; rdf:predicate ?p; rdf:object ?z ] a wdc:DerivationRelationship .} WHERE { ?p rdf:type owl:TransitiveProperty . ?x ?p ?y . ?y ?p ?z . FILTER NOT EXISTS {?x ?p ?z } }" @query_list[:WIDU_shortCut] = prefix + "CONSTRUCT {?x ?p ?z . [ rdf:subject ?x; rdf:predicate ?r; rdf:object ?y ] a wdc:DerivationRelationship .} WHERE { ?class1 wdc:shortCut ?class3. ?x a ?class1 . ?y a ?class2 . ?z a ?class3 . ?x ?p ?y . ?y ?p ?z . FILTER NOT EXISTS { ?x ?p ?z } FILTER NOT EXISTS { ?y a ?class1 } FILTER NOT EXISTS { ?y a ?class3 } }" @query_list[:WIDU_isWeakerThan1] = prefix + "CONSTRUCT {?x ?p ?z . [ rdf:subject ?x; rdf:predicate ?p; rdf:object ?z ] a wdc:DerivationRelationship .} WHERE { ?p wdc:isWeakerThan ?p2 . ?x ?p ?y . ?y ?p2 ?z . FILTER NOT EXISTS { ?x ?p ?z } }" @query_list[:WIDU_isWeakerThan2] = prefix + "CONSTRUCT {?x ?p2 ?z . [ rdf:subject ?x; rdf:predicate ?p2; rdf:object ?z ] a wdc:DerivationRelationship .} WHERE { ?p2 wdc:isWeakerThan ?p . ?x ?p ?y . ?y ?p2 ?z . FILTER NOT EXISTS { ?x ?p2 ?z } }" @query_list[:RDFS_Plus_inverseOf9] = prefix + "CONSTRUCT {?y ?q ?x . [ rdf:subject ?x; rdf:predicate ?r; rdf:object ?y ] a wdc:DerivationRelationship .} 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
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/rdf_inference.rb', line 113 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 |