|
TransformationRules
# Rules for transforming level 1 relations towards higher levels The SPARQL Inference Notation (SPIN) and SPARQL/Update (SPARUL) are two recent Semantic Web technologies, which can work together for creating rules in RDF and Linked Data. SPARQL makes queries over RDF graphs, SPARUL updates and transforms RDF graphs, whereas SPIN provides an RDF notation for both SPARQL and SPARUL. An RDF store that contains SPIN rules, can therefore update itself automatically. LORE can use SPIN-expressed SPARUL rules to transform Linked Data from various origins towards Linked Data that contains LORE relations only. The workflow for implementing this architecture implies that Linked Data publishers create a SPARUL rule for each non-LORE relation they have published. This will result in a library of SPIN-expressed SPARUL rules that provides a more solid semantics to the Linked Data, and that may improve query-recall when the rules are actually implemented. Here follows an example of a LORE rule in SPARUL, which defines the IRI my_LOD:part_of in terms of the LORE relation LORE:is-part-of: PREFIX LORE:...
PREFIX my_LOD:...
INSERT INTO GRAPH <LORE_only> {
?subject <LORE:is-part-of> ?object.
}
WHERE {
GRAPH <published_LOD> {
?subject <my_LOD:part_of> ?object.
}
}An example of an expansion of a triple that expresses a disposition at the class-level in OWL/RDF: water *boiling-point* 100C <=> water *rdfs:subClassOf* substance 100 C *rdfs:subClassOf* quality water *rdfs:subClassOf* substance#12345 substance#12345 *owl:onProperty* boils-at substance#12345 *owl:someValuesFrom* 100C <=> water *rdfs:subClassOf* substance 100 C *rdfs:subClassOf* quality water *rdfs:subClassOf* substance#65476 substance#65476 *owl:onProperty* has-disposition substance#65476 *owl:someValuesFrom* boiling-disposition#345846 boiling-disposition#345846 *rdfs:subClassOf* disposition boiling-disposition#345846 *owl:equivalentClass* realizable#678453 realizable#678453 *owl:onProperty* is-realized-in realizable#678453 *owl:someValuesFrom* boiling-process#648766 boiling-process#648766 *rdfs:subClassOf* process boiling-process#648766 *owl:intersectionOf* bnode#245887 bnode#245887 rdf:first water-process#78974 water-process#78974 *owl:onProperty* has-participant water-process#78974 owl:someValuesFrom water bnode#245887 rdf:rest bnode#478751 bnode#478751 rdf:first 100C-process#35468 100C-process#35468 *owl:onProperty* has-participant 100C-process#35468 owl:someValuesFrom 100C bnode#478751 rdf:rest rdf:nil |
Here we break our rule and treat water as a class. Shouldn't we demonstrate the standard case, in which water is just considered an instance? The interpretation of water as a class could then be a second step.
How would the set of rules for boiling-point look like?
Ok. Then both water and 100C would be individuals that are instances of respectively substance and quality. How will LORE treat this? The individual 'water' has-disposition some boiling-disposition AND etc., etc.? Let's try to use this example to clarify the approach.
the intent of "water boils at 100C" is to say that (any instance of) water has the disposition to boil at an observed temperature of 100C. It's perfectly valid to express water in this context as a type of substance.