- From: David Booth <david@dbooth.org>
- Date: Tue, 05 May 2015 14:25:16 -0400
- To: public-owl-wg@w3.org
- CC: Eric Prud'hommeaux <eric@w3.org>, Anthony Mallia <amallia@edmondsci.com>
We are working on an RDF representation and ontology for FHIR (a new healthcare data standard) http://wiki.hl7.org/index.php?title=FHIR and in some cases the most natural RDF to generate would involve blank nodes for some nodes instead of URIs. However, we are noticing that this is causing (at least some) OWL reasoners to fail to classify those nodes as we would like. The problem goes away if we use a URI instead of a blank node. Is this an inherent feature of OWL reasoners or a limitation of specific tools? For example, in the turtle below, a DLQuery "hasSSN some xsd:string" returns 1 instance: frankson. In contrast, a SPARQL query prefix : <http://BlankNodeTest/> SELECT ?subject ?object WHERE { ?subject :hasSSN ?object }" returns the desired 2 solutions. Notice the two children of :frank in the following example Turtle: [[ @prefix : <http://BlankNodeTest/> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xml: <http://www.w3.org/XML/1998/namespace> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @base <http://BlankNodeTest> . <http://BlankNodeTest> a owl:Ontology . :hasChild a owl:AsymmetricProperty , owl:ObjectProperty . :hasHairColor a owl:ObjectProperty ; rdfs:range :HairColor . # :hasSSN a owl:ObjectProperty . :hasSSN a owl:DatatypeProperty . :value a owl:DatatypeProperty . :code a owl:Class . :HairColor a owl:Class ; rdfs:subClassOf :code . :BrownHaired a owl:Class ; owl:equivalentClass [ a owl:Class ; owl:intersectionOf ( :HairColor [ owl:onProperty :value ; owl:hasValue "brown" ] ) ] ; rdfs:subClassOf :HairColor . :brown1 a :HairColor , owl:NamedIndividual ; :value "brown" . :Person a owl:Class . :frank a :Person , owl:NamedIndividual ; :hasChild [ a :Person ; :hasSSN "123-45-6789" ; :hasHairColor [ a :HairColor ; :value "brown" ] ], :frankson . :frankson a :Person ; :hasSSN "123-45-6790" ; :hasHairColor [ a :HairColor ; :value "brown" ] . ]] Thanks, David Booth
Received on Tuesday, 5 May 2015 18:25:48 UTC