You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Benson Margulies <bi...@gmail.com> on 2010/12/30 01:10:01 UTC

query filters out tuples I want to keep ...

The following query seems to hate rex:hasNormalizedText triples that
aren't matched by the initial clause. That is, if we have

  x hasNormalizedText "taliban"
  x sameAs y
  y hasNormalizedText "foo"

all the tuples with y in the subject are returned EXCEPT the
hasNormalizedText tuple. Data follows at bottom.

PREFIX rex:   <http://www.basistech.com/ontologies/2010/6/rex.owl#>
PREFIX owl:   <http://www.w3.org/2002/07/owl#>
PREFIX x-arq: <urn:x-arq:>
PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>

CONSTRUCT{
  ?s ?p ?o .
  ?root ?p ?o .
  ?root rex:root "true"
}
WHERE
{
      { ?root rex:hasNormalizedText "Taliban" }
      UNION
      { ?root rex:hasNormalizedText "Taliban" .
        ?s (owl:sameAs|^owl:sameAs)* ?root .
      }
      UNION
      {
        ?root rex:hasNormalizedText "Taliban" .
	?root ?pred ?s .
        ?pred rdfs:subPropertyOf* rex:relationship .
      }
      UNION
      {
        ?root rex:hasNormalizedText "Taliban" .
        ?root (owl:sameAs|^owl:sameAs)* ?t .
	?t ?pred ?s .
        ?pred rdfs:subPropertyOf* rex:relationship .
      }
      UNION
      {
        ?root rex:hasNormalizedText "Taliban" .
        ?root ?pred ?t .
        ?pred rdfs:subPropertyOf* rex:relationship .
	?t (owl:sameAs|^owl:sameAs)* ?s .
      }
      ?root ?p ?o .
      ?s ?p ?o .
}

------------- data ----------------


@prefix x-arq:   <urn:x-arq:> .
@prefix :        <http://www.basistech.com/ontologies/2010/6/rex.owl#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rex:     <http://www.basistech.com/ontologies/2010/6/rex.owl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<uri:jug:x#notIndia>
      a       rex:Location ;
      rex:hasNormalizedText
              "Not India" .

<uri:jug:taliban#1>
      a       rex:Organization ;
      <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
              <uri:jug:pakistan#1> ;
      rex:hasNormalizedText
              "Taliban" ;
      owl:sameAs <uri:jug:taliban#2> , <uri:jug:staliban#1> ,
<uri:jug:taliban#3> .

rdfs:label
      a       owl:AnnotationProperty .

rex:LatitudeLongitude
      a       owl:Class ;
      rdfs:subClassOf rex:GeoLocation .

rex:Nationality
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:hasCustomEntityType
      a       owl:DatatypeProperty ;
      rdfs:comment "This property is set on entity references that are
tagged with a user-defined type."^^xsd:string ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:hasNormalizedText
      a       owl:DatatypeProperty ;
      rdfs:comment "Normalized text of an entity reference"^^xsd:string ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:EntityReference
      a       owl:Class ;
      rdfs:subClassOf
              [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasEntityDetectionSource ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] ;
      rdfs:subClassOf
              [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasContainingDocument ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] ;
      rdfs:subClassOf
              [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasOriginalText ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] ;
      rdfs:subClassOf
              [ a       owl:Restriction ;
                owl:maxQualifiedCardinality
                        "1"^^xsd:nonNegativeInteger ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasCustomEntityType
              ] ;
      rdfs:subClassOf
              [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasNormalizedText ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] .

rdfs:comment
      a       owl:AnnotationProperty .

<http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
      rdfs:subClassOf rex:relationship .

rex:Location
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:GeoLocation
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:CreditCardNumber
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:Date
      a       owl:Class ;
      rdfs:subClassOf rex:Temporal .

<uri:jug:taliban#2>
      a       rex:Organization ;
      <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
              <uri:jug:x#someplace> ;
      rex:hasNormalizedText
              "Taliban" .

<uri:jug:x#someplace>
      a       rex:Location ;
      rex:hasNormalizedText
              "Someplace Else" .

<uri:jug:pakistan#1>
      a       rex:Location ;
      rex:hasNormalizedText
              "Pakistan" ;
      rex:hasOriginalText "Pakistan" ;
      owl:sameAs <uri:jug:x#notIndia> .

rex:Religion
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:hasContainingDocument
      a       owl:DatatypeProperty ;
      rdfs:comment "A reference to the URI of the document where
something was discovered."@en ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:hasOriginalText
      a       owl:DatatypeProperty ;
      rdfs:comment "The original text of a reference."^^xsd:string ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:relationship
      a       owl:ObjectProperty ;
      rdfs:comment "All the relationships in the jape rules are set up
to be sub-properties of this."@en ;
      rdfs:subPropertyOf owl:topObjectProperty .

rex:Number
      a       owl:Class ;
      rdfs:subClassOf rex:Quantity .

rex:UTM
      a       owl:Class ;
      rdfs:subClassOf rex:GeoLocation .

rex:USA_SSN
      a       owl:Class ;
      rdfs:subClassOf rex:PersonalIdNumber .

rex:URL
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:Time
      a       owl:Class ;
      rdfs:subClassOf rex:Temporal .

[]    a       owl:AllDisjointClasses ;
      owl:members (rex:CreditCardNumber rex:Date rex:Distance
rex:DomainName rex:Email rex:Facility rex:FaxNumber rex:GeoLocation
rex:IPAddress rex:Identifier rex:LatitudeLongitude rex:Location
rex:Money rex:Nationality rex:Organization rex:Percent rex:Person
rex:PersonalIdNumber rex:Quantity rex:Religion rex:TelephoneNumber
rex:Temporal rex:URL rex:USA_SSN rex:UTM rex:Vehicle rex:Weapon) .

[]    a       [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasOriginalText ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] .

rex:Organization
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

<http://www.basistech.com/ontologies/2010/6/rex.owl>
      a       owl:Ontology ;
      rdfs:comment "An ontology for entity references as extracted by
REX, with some base support for relationships."@en .

rex:ruleDataProperty
      a       owl:DatatypeProperty ;
      rdfs:comment "Any data properties discovered in the jape rules
are set up to be subprops of this."@en ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:DomainName
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:PersonalIdNumber
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:TelephoneNumber
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:corefLink
      a       owl:ObjectProperty ;
      rdfs:subPropertyOf owl:sameAs .

rex:crossdocCorefLink
      a       owl:ObjectProperty ;
      rdfs:subPropertyOf rex:corefLink .

rex:indocCorefLink
      a       owl:ObjectProperty ;
      rdfs:subPropertyOf rex:corefLink .

<uri:jug:staliban#1>
      a       rex:Organization ;
      <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
              <uri:jug:pakistan#1> ;
      rex:hasNormalizedText
              "STaliban" .

<uri:jug:afghan#1>
      a       rex:Location ;
      rex:hasNormalizedText
              "Afghanistan" ;
      rex:hasOriginalText "Afghanistan" .

<uri:jug:taliban#3>
      a       rex:Organization ;
      <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
              <uri:jug:afghan#1> ;
      rex:hasNormalizedText
              "Taliban" .

rex:Distance
      a       owl:Class ;
      rdfs:subClassOf rex:Quantity .

rex:Money
      a       owl:Class ;
      rdfs:subClassOf rex:Quantity .

<uri:jug:unrelated#1>
      a       rex:Person ;
      rex:hasNormalizedText
              "Smith" ;
      rex:hasOriginalText "Smif" .

owl:topDataProperty
      a       owl:DatatypeProperty .

owl:topObjectProperty
      a       owl:ObjectProperty .

rex:IPAddress
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:Temporal
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:Facility
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:Identifier
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:FaxNumber
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:Vehicle
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:Email
      a       owl:Class ;
      rdfs:subClassOf rex:Identifier .

rex:Quantity
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:hasEntityDetectionSource
      a       owl:DatatypeProperty ;
      rdfs:comment "The source of the reference."^^xsd:string ;
      rdfs:subPropertyOf owl:topDataProperty .

rex:Person
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

rex:Weapon
      a       owl:Class ;
      rdfs:subClassOf rex:EntityReference .

[]    a       [ a       owl:Restriction ;
                owl:onDataRange xsd:string ;
                owl:onProperty rex:hasNormalizedText ;
                owl:qualifiedCardinality
                        "1"^^xsd:nonNegativeInteger
              ] .

rex:Percent
      a       owl:Class ;
      rdfs:subClassOf rex:Quantity .

owl:sameAs
      a       owl:ObjectProperty .

Re: query filters out tuples I want to keep ...

Posted by Benson Margulies <bi...@gmail.com>.
Andy,

You diagnosed a problem, but not the problem I was trying to ask
about. I hit *that* problem and dealt with it myself, later.

Even the sameAs case, which didn't suffer from my failure to include
the subproperty triple in the data, filtered out all the
hasOriginalText triples. The working query I posted seemed to get
around that be eliminating any possibility of connections between the
UNION cases. The 'STaliban' item was in the set to explore this
situation.

If you get 'round to look at my blank-node-infested 'working' version,
you'll see what I did.

Note that I was having some trouble keeping subClass and subProperty
hierarchies straight, though I've subsequently got all that under
control.

--benson






On Thu, Dec 30, 2010 at 4:39 PM, Andy Seaborne
<an...@epimorphics.com> wrote:
> In your data, rex:relationship isn't the super property of anything so
>
>   ?pred rdfs:subPropertyOf* rex:relationship
>
> isn't going to match anything except directly rex:relationship.
>
>        Andy
>
> On 30/12/10 00:10, Benson Margulies wrote:
>>
>> The following query seems to hate rex:hasNormalizedText triples that
>> aren't matched by the initial clause. That is, if we have
>>
>>   x hasNormalizedText "taliban"
>>   x sameAs y
>>   y hasNormalizedText "foo"
>>
>> all the tuples with y in the subject are returned EXCEPT the
>> hasNormalizedText tuple. Data follows at bottom.
>>
>> PREFIX rex:<http://www.basistech.com/ontologies/2010/6/rex.owl#>
>> PREFIX owl:<http://www.w3.org/2002/07/owl#>
>> PREFIX x-arq:<urn:x-arq:>
>> PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
>>
>> CONSTRUCT{
>>   ?s ?p ?o .
>>   ?root ?p ?o .
>>   ?root rex:root "true"
>> }
>> WHERE
>> {
>>       { ?root rex:hasNormalizedText "Taliban" }
>>       UNION
>>       { ?root rex:hasNormalizedText "Taliban" .
>>         ?s (owl:sameAs|^owl:sameAs)* ?root .
>>       }
>>       UNION
>>       {
>>         ?root rex:hasNormalizedText "Taliban" .
>>        ?root ?pred ?s .
>>         ?pred rdfs:subPropertyOf* rex:relationship .
>>       }
>>       UNION
>>       {
>>         ?root rex:hasNormalizedText "Taliban" .
>>         ?root (owl:sameAs|^owl:sameAs)* ?t .
>>        ?t ?pred ?s .
>>         ?pred rdfs:subPropertyOf* rex:relationship .
>>       }
>>       UNION
>>       {
>>         ?root rex:hasNormalizedText "Taliban" .
>>         ?root ?pred ?t .
>>         ?pred rdfs:subPropertyOf* rex:relationship .
>>        ?t (owl:sameAs|^owl:sameAs)* ?s .
>>       }
>>       ?root ?p ?o .
>>       ?s ?p ?o .
>> }
>>
>> ------------- data ----------------
>>
>>
>> @prefix x-arq:<urn:x-arq:>  .
>> @prefix :<http://www.basistech.com/ontologies/2010/6/rex.owl#>  .
>> @prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#>  .
>> @prefix rex:<http://www.basistech.com/ontologies/2010/6/rex.owl#>  .
>> @prefix owl:<http://www.w3.org/2002/07/owl#>  .
>> @prefix xsd:<http://www.w3.org/2001/XMLSchema#>  .
>> @prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>  .
>>
>> <uri:jug:x#notIndia>
>>       a       rex:Location ;
>>       rex:hasNormalizedText
>>               "Not India" .
>>
>> <uri:jug:taliban#1>
>>       a       rex:Organization ;
>>       <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>>               <uri:jug:pakistan#1>  ;
>>       rex:hasNormalizedText
>>               "Taliban" ;
>>       owl:sameAs<uri:jug:taliban#2>  ,<uri:jug:staliban#1>  ,
>> <uri:jug:taliban#3>  .
>>
>> rdfs:label
>>       a       owl:AnnotationProperty .
>>
>> rex:LatitudeLongitude
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:GeoLocation .
>>
>> rex:Nationality
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:hasCustomEntityType
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "This property is set on entity references that are
>> tagged with a user-defined type."^^xsd:string ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:hasNormalizedText
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "Normalized text of an entity reference"^^xsd:string ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:EntityReference
>>       a       owl:Class ;
>>       rdfs:subClassOf
>>               [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasEntityDetectionSource ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] ;
>>       rdfs:subClassOf
>>               [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasContainingDocument ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] ;
>>       rdfs:subClassOf
>>               [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasOriginalText ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] ;
>>       rdfs:subClassOf
>>               [ a       owl:Restriction ;
>>                 owl:maxQualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasCustomEntityType
>>               ] ;
>>       rdfs:subClassOf
>>               [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasNormalizedText ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] .
>>
>> rdfs:comment
>>       a       owl:AnnotationProperty .
>>
>> <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>>       rdfs:subClassOf rex:relationship .
>>
>> rex:Location
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:GeoLocation
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:CreditCardNumber
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:Date
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Temporal .
>>
>> <uri:jug:taliban#2>
>>       a       rex:Organization ;
>>       <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>>               <uri:jug:x#someplace>  ;
>>       rex:hasNormalizedText
>>               "Taliban" .
>>
>> <uri:jug:x#someplace>
>>       a       rex:Location ;
>>       rex:hasNormalizedText
>>               "Someplace Else" .
>>
>> <uri:jug:pakistan#1>
>>       a       rex:Location ;
>>       rex:hasNormalizedText
>>               "Pakistan" ;
>>       rex:hasOriginalText "Pakistan" ;
>>       owl:sameAs<uri:jug:x#notIndia>  .
>>
>> rex:Religion
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:hasContainingDocument
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "A reference to the URI of the document where
>> something was discovered."@en ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:hasOriginalText
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "The original text of a reference."^^xsd:string ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:relationship
>>       a       owl:ObjectProperty ;
>>       rdfs:comment "All the relationships in the jape rules are set up
>> to be sub-properties of this."@en ;
>>       rdfs:subPropertyOf owl:topObjectProperty .
>>
>> rex:Number
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Quantity .
>>
>> rex:UTM
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:GeoLocation .
>>
>> rex:USA_SSN
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:PersonalIdNumber .
>>
>> rex:URL
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:Time
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Temporal .
>>
>> []    a       owl:AllDisjointClasses ;
>>       owl:members (rex:CreditCardNumber rex:Date rex:Distance
>> rex:DomainName rex:Email rex:Facility rex:FaxNumber rex:GeoLocation
>> rex:IPAddress rex:Identifier rex:LatitudeLongitude rex:Location
>> rex:Money rex:Nationality rex:Organization rex:Percent rex:Person
>> rex:PersonalIdNumber rex:Quantity rex:Religion rex:TelephoneNumber
>> rex:Temporal rex:URL rex:USA_SSN rex:UTM rex:Vehicle rex:Weapon) .
>>
>> []    a       [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasOriginalText ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] .
>>
>> rex:Organization
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> <http://www.basistech.com/ontologies/2010/6/rex.owl>
>>       a       owl:Ontology ;
>>       rdfs:comment "An ontology for entity references as extracted by
>> REX, with some base support for relationships."@en .
>>
>> rex:ruleDataProperty
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "Any data properties discovered in the jape rules
>> are set up to be subprops of this."@en ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:DomainName
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:PersonalIdNumber
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:TelephoneNumber
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:corefLink
>>       a       owl:ObjectProperty ;
>>       rdfs:subPropertyOf owl:sameAs .
>>
>> rex:crossdocCorefLink
>>       a       owl:ObjectProperty ;
>>       rdfs:subPropertyOf rex:corefLink .
>>
>> rex:indocCorefLink
>>       a       owl:ObjectProperty ;
>>       rdfs:subPropertyOf rex:corefLink .
>>
>> <uri:jug:staliban#1>
>>       a       rex:Organization ;
>>       <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>>               <uri:jug:pakistan#1>  ;
>>       rex:hasNormalizedText
>>               "STaliban" .
>>
>> <uri:jug:afghan#1>
>>       a       rex:Location ;
>>       rex:hasNormalizedText
>>               "Afghanistan" ;
>>       rex:hasOriginalText "Afghanistan" .
>>
>> <uri:jug:taliban#3>
>>       a       rex:Organization ;
>>       <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>>               <uri:jug:afghan#1>  ;
>>       rex:hasNormalizedText
>>               "Taliban" .
>>
>> rex:Distance
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Quantity .
>>
>> rex:Money
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Quantity .
>>
>> <uri:jug:unrelated#1>
>>       a       rex:Person ;
>>       rex:hasNormalizedText
>>               "Smith" ;
>>       rex:hasOriginalText "Smif" .
>>
>> owl:topDataProperty
>>       a       owl:DatatypeProperty .
>>
>> owl:topObjectProperty
>>       a       owl:ObjectProperty .
>>
>> rex:IPAddress
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:Temporal
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:Facility
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:Identifier
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:FaxNumber
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:Vehicle
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:Email
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Identifier .
>>
>> rex:Quantity
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:hasEntityDetectionSource
>>       a       owl:DatatypeProperty ;
>>       rdfs:comment "The source of the reference."^^xsd:string ;
>>       rdfs:subPropertyOf owl:topDataProperty .
>>
>> rex:Person
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> rex:Weapon
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:EntityReference .
>>
>> []    a       [ a       owl:Restriction ;
>>                 owl:onDataRange xsd:string ;
>>                 owl:onProperty rex:hasNormalizedText ;
>>                 owl:qualifiedCardinality
>>                         "1"^^xsd:nonNegativeInteger
>>               ] .
>>
>> rex:Percent
>>       a       owl:Class ;
>>       rdfs:subClassOf rex:Quantity .
>>
>> owl:sameAs
>>       a       owl:ObjectProperty .
>

Re: query filters out tuples I want to keep ...

Posted by Andy Seaborne <an...@epimorphics.com>.
In your data, rex:relationship isn't the super property of anything so

    ?pred rdfs:subPropertyOf* rex:relationship

isn't going to match anything except directly rex:relationship.

	Andy

On 30/12/10 00:10, Benson Margulies wrote:
> The following query seems to hate rex:hasNormalizedText triples that
> aren't matched by the initial clause. That is, if we have
>
>    x hasNormalizedText "taliban"
>    x sameAs y
>    y hasNormalizedText "foo"
>
> all the tuples with y in the subject are returned EXCEPT the
> hasNormalizedText tuple. Data follows at bottom.
>
> PREFIX rex:<http://www.basistech.com/ontologies/2010/6/rex.owl#>
> PREFIX owl:<http://www.w3.org/2002/07/owl#>
> PREFIX x-arq:<urn:x-arq:>
> PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
>
> CONSTRUCT{
>    ?s ?p ?o .
>    ?root ?p ?o .
>    ?root rex:root "true"
> }
> WHERE
> {
>        { ?root rex:hasNormalizedText "Taliban" }
>        UNION
>        { ?root rex:hasNormalizedText "Taliban" .
>          ?s (owl:sameAs|^owl:sameAs)* ?root .
>        }
>        UNION
>        {
>          ?root rex:hasNormalizedText "Taliban" .
> 	?root ?pred ?s .
>          ?pred rdfs:subPropertyOf* rex:relationship .
>        }
>        UNION
>        {
>          ?root rex:hasNormalizedText "Taliban" .
>          ?root (owl:sameAs|^owl:sameAs)* ?t .
> 	?t ?pred ?s .
>          ?pred rdfs:subPropertyOf* rex:relationship .
>        }
>        UNION
>        {
>          ?root rex:hasNormalizedText "Taliban" .
>          ?root ?pred ?t .
>          ?pred rdfs:subPropertyOf* rex:relationship .
> 	?t (owl:sameAs|^owl:sameAs)* ?s .
>        }
>        ?root ?p ?o .
>        ?s ?p ?o .
> }
>
> ------------- data ----------------
>
>
> @prefix x-arq:<urn:x-arq:>  .
> @prefix :<http://www.basistech.com/ontologies/2010/6/rex.owl#>  .
> @prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#>  .
> @prefix rex:<http://www.basistech.com/ontologies/2010/6/rex.owl#>  .
> @prefix owl:<http://www.w3.org/2002/07/owl#>  .
> @prefix xsd:<http://www.w3.org/2001/XMLSchema#>  .
> @prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>  .
>
> <uri:jug:x#notIndia>
>        a       rex:Location ;
>        rex:hasNormalizedText
>                "Not India" .
>
> <uri:jug:taliban#1>
>        a       rex:Organization ;
>        <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>                <uri:jug:pakistan#1>  ;
>        rex:hasNormalizedText
>                "Taliban" ;
>        owl:sameAs<uri:jug:taliban#2>  ,<uri:jug:staliban#1>  ,
> <uri:jug:taliban#3>  .
>
> rdfs:label
>        a       owl:AnnotationProperty .
>
> rex:LatitudeLongitude
>        a       owl:Class ;
>        rdfs:subClassOf rex:GeoLocation .
>
> rex:Nationality
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:hasCustomEntityType
>        a       owl:DatatypeProperty ;
>        rdfs:comment "This property is set on entity references that are
> tagged with a user-defined type."^^xsd:string ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:hasNormalizedText
>        a       owl:DatatypeProperty ;
>        rdfs:comment "Normalized text of an entity reference"^^xsd:string ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:EntityReference
>        a       owl:Class ;
>        rdfs:subClassOf
>                [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasEntityDetectionSource ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] ;
>        rdfs:subClassOf
>                [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasContainingDocument ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] ;
>        rdfs:subClassOf
>                [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasOriginalText ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] ;
>        rdfs:subClassOf
>                [ a       owl:Restriction ;
>                  owl:maxQualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasCustomEntityType
>                ] ;
>        rdfs:subClassOf
>                [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasNormalizedText ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] .
>
> rdfs:comment
>        a       owl:AnnotationProperty .
>
> <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>        rdfs:subClassOf rex:relationship .
>
> rex:Location
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:GeoLocation
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:CreditCardNumber
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:Date
>        a       owl:Class ;
>        rdfs:subClassOf rex:Temporal .
>
> <uri:jug:taliban#2>
>        a       rex:Organization ;
>        <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>                <uri:jug:x#someplace>  ;
>        rex:hasNormalizedText
>                "Taliban" .
>
> <uri:jug:x#someplace>
>        a       rex:Location ;
>        rex:hasNormalizedText
>                "Someplace Else" .
>
> <uri:jug:pakistan#1>
>        a       rex:Location ;
>        rex:hasNormalizedText
>                "Pakistan" ;
>        rex:hasOriginalText "Pakistan" ;
>        owl:sameAs<uri:jug:x#notIndia>  .
>
> rex:Religion
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:hasContainingDocument
>        a       owl:DatatypeProperty ;
>        rdfs:comment "A reference to the URI of the document where
> something was discovered."@en ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:hasOriginalText
>        a       owl:DatatypeProperty ;
>        rdfs:comment "The original text of a reference."^^xsd:string ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:relationship
>        a       owl:ObjectProperty ;
>        rdfs:comment "All the relationships in the jape rules are set up
> to be sub-properties of this."@en ;
>        rdfs:subPropertyOf owl:topObjectProperty .
>
> rex:Number
>        a       owl:Class ;
>        rdfs:subClassOf rex:Quantity .
>
> rex:UTM
>        a       owl:Class ;
>        rdfs:subClassOf rex:GeoLocation .
>
> rex:USA_SSN
>        a       owl:Class ;
>        rdfs:subClassOf rex:PersonalIdNumber .
>
> rex:URL
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:Time
>        a       owl:Class ;
>        rdfs:subClassOf rex:Temporal .
>
> []    a       owl:AllDisjointClasses ;
>        owl:members (rex:CreditCardNumber rex:Date rex:Distance
> rex:DomainName rex:Email rex:Facility rex:FaxNumber rex:GeoLocation
> rex:IPAddress rex:Identifier rex:LatitudeLongitude rex:Location
> rex:Money rex:Nationality rex:Organization rex:Percent rex:Person
> rex:PersonalIdNumber rex:Quantity rex:Religion rex:TelephoneNumber
> rex:Temporal rex:URL rex:USA_SSN rex:UTM rex:Vehicle rex:Weapon) .
>
> []    a       [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasOriginalText ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] .
>
> rex:Organization
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> <http://www.basistech.com/ontologies/2010/6/rex.owl>
>        a       owl:Ontology ;
>        rdfs:comment "An ontology for entity references as extracted by
> REX, with some base support for relationships."@en .
>
> rex:ruleDataProperty
>        a       owl:DatatypeProperty ;
>        rdfs:comment "Any data properties discovered in the jape rules
> are set up to be subprops of this."@en ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:DomainName
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:PersonalIdNumber
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:TelephoneNumber
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:corefLink
>        a       owl:ObjectProperty ;
>        rdfs:subPropertyOf owl:sameAs .
>
> rex:crossdocCorefLink
>        a       owl:ObjectProperty ;
>        rdfs:subPropertyOf rex:corefLink .
>
> rex:indocCorefLink
>        a       owl:ObjectProperty ;
>        rdfs:subPropertyOf rex:corefLink .
>
> <uri:jug:staliban#1>
>        a       rex:Organization ;
>        <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>                <uri:jug:pakistan#1>  ;
>        rex:hasNormalizedText
>                "STaliban" .
>
> <uri:jug:afghan#1>
>        a       rex:Location ;
>        rex:hasNormalizedText
>                "Afghanistan" ;
>        rex:hasOriginalText "Afghanistan" .
>
> <uri:jug:taliban#3>
>        a       rex:Organization ;
>        <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>
>                <uri:jug:afghan#1>  ;
>        rex:hasNormalizedText
>                "Taliban" .
>
> rex:Distance
>        a       owl:Class ;
>        rdfs:subClassOf rex:Quantity .
>
> rex:Money
>        a       owl:Class ;
>        rdfs:subClassOf rex:Quantity .
>
> <uri:jug:unrelated#1>
>        a       rex:Person ;
>        rex:hasNormalizedText
>                "Smith" ;
>        rex:hasOriginalText "Smif" .
>
> owl:topDataProperty
>        a       owl:DatatypeProperty .
>
> owl:topObjectProperty
>        a       owl:ObjectProperty .
>
> rex:IPAddress
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:Temporal
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:Facility
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:Identifier
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:FaxNumber
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:Vehicle
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:Email
>        a       owl:Class ;
>        rdfs:subClassOf rex:Identifier .
>
> rex:Quantity
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:hasEntityDetectionSource
>        a       owl:DatatypeProperty ;
>        rdfs:comment "The source of the reference."^^xsd:string ;
>        rdfs:subPropertyOf owl:topDataProperty .
>
> rex:Person
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> rex:Weapon
>        a       owl:Class ;
>        rdfs:subClassOf rex:EntityReference .
>
> []    a       [ a       owl:Restriction ;
>                  owl:onDataRange xsd:string ;
>                  owl:onProperty rex:hasNormalizedText ;
>                  owl:qualifiedCardinality
>                          "1"^^xsd:nonNegativeInteger
>                ] .
>
> rex:Percent
>        a       owl:Class ;
>        rdfs:subClassOf rex:Quantity .
>
> owl:sameAs
>        a       owl:ObjectProperty .