Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Edoal Rule for Same RoleClass,SUClass #2

Open
omarrana opened this issue Sep 22, 2017 · 1 comment
Open

Edoal Rule for Same RoleClass,SUClass #2

omarrana opened this issue Sep 22, 2017 · 1 comment
Assignees

Comments

@omarrana
Copy link
Contributor

omarrana commented Sep 22, 2017

Currently, the and operator is not working.

<?xml` version='1.0' encoding='utf-8' standalone='no'?>
<rdf:RDF xmlns='http://knowledgeweb.semanticweb.org/heterogeneity/alignment#'
         xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
         xmlns:xsd='http://www.w3.org/2001/XMLSchema#'
         xmlns:alext='http://exmo.inrialpes.fr/align/ext/1.0/'
         xmlns:align='http://knowledgeweb.semanticweb.org/heterogeneity/alignment#'
         xmlns:edoal='http://ns.inria.org/edoal/1.0/#'>
<Alignment>
  <xml>yes</xml>
  <level>2EDOAL</level>
  <type>**</type>
  <onto1>
    <Ontology rdf:about="https://w3id.org/i40/aml2#">
      <location>file:c://converted.owl</location>
      <formalism>
        <Formalism align:name="OWL1.0" align:uri="http://www.w3.org/2002/07/owl#"/>
      </formalism>
    </Ontology>
  </onto1>
  <onto2>
    <Ontology rdf:about="https://w3id.org/i40/aml#">
      <location>file:c://converted-1.owl</location>
      <formalism>
        <Formalism align:name="OWL1.0" align:uri="http://www.w3.org/2002/07/owl#"/>
      </formalism>
    </Ontology>
  </onto2>
  <map>
    <Cell rdf:about="http://exmo.inrialpes.fr/connectors-core#cell1">
      <entity1>
        <edoal:Class rdf:about="https://w3id.org/i40/aml2#RoleClass"/>
      </entity1>
      <entity2>
        <edoal:Class>
          <edoal:and rdf:parseType="Collection">
            <edoal:Class rdf:about="https://w3id.org/i40/aml#RoleClass"/>
            <edoal:AttributeValueRestriction>
              <edoal:onAttribute>
                <edoal:Property>
                  <edoal:compose rdf:parseType="Collection">
                  	<edoal:Relation rdf:about="https://w3id.org/i40/aml2#hasAttribute"/>
                    <edoal:Property rdf:about="https://w3id.org/i40/aml#hasAttributeName"/>
                  </edoal:compose>
                </edoal:Property>
              </edoal:onAttribute>
              <edoal:comparator rdf:resource="http://ns.inria.org/edoal/1.0/#equals"/>
              <edoal:value>
                <edoal:Literal edoal:type="http://www.w3.org/2001/XMLSchema#string" edoal:string="'eClassVersion'"/>
              </edoal:value>
            </edoal:AttributeValueRestriction>
            <edoal:AttributeValueRestriction>
              <edoal:onAttribute>
                <edoal:Property>
                  <edoal:compose rdf:parseType="Collection">
                  	<edoal:Relation rdf:about="https://w3id.org/i40/aml2#hasAttribute"/> 
                    <edoal:Property rdf:about="https://w3id.org/i40/aml#hasAttributeName"/>
                  </edoal:compose>
                </edoal:Property>
              </edoal:onAttribute>
              <edoal:comparator rdf:resource="http://ns.inria.org/edoal/1.0/#equals"/>
              <edoal:value>
                <edoal:Literal edoal:type="http://www.w3.org/2001/XMLSchema#string" edoal:string="'eClassClassificationClass'"/>
              </edoal:value>
            </edoal:AttributeValueRestriction>
            <edoal:AttributeValueRestriction>
              <edoal:onAttribute>
                <edoal:Property>
                  <edoal:compose rdf:parseType="Collection">
                    <edoal:Relation rdf:about="https://w3id.org/i40/aml2#hasAttribute"/>
                    <edoal:Property rdf:about="https://w3id.org/i40/aml#hasAttributeName"/>
                  </edoal:compose>
                </edoal:Property>
              </edoal:onAttribute>
              <edoal:comparator rdf:resource="http://ns.inria.org/edoal/1.0/#equals"/>
              <edoal:value>
                <edoal:Literal edoal:type="http://www.w3.org/2001/XMLSchema#string" edoal:string="'eClassIRDI'"/>
              </edoal:value>
            </edoal:AttributeValueRestriction>
          </edoal:and>
        </edoal:Class>
      </entity2>
      <relation>=</relation>
      <measure rdf:datatype='http://www.w3.org/2001/XMLSchema#float'>1.0</measure>
      <edoal:linkkey>
        <edoal:Linkkey>
          <edoal:binding>
            <edoal:Intersects>
              <edoal:property1>
                <edoal:Property>
                  <edoal:compose rdf:parseType="Collection">
                    <edoal:Relation rdf:about="https://w3id.org/i40/aml2#hasAttribute"/>
                    <edoal:Property rdf:about="https://w3id.org/i40/aml2#hasAttributeValue"/>
                  </edoal:compose>
                </edoal:Property>
              </edoal:property1>
              <edoal:property2>
                <edoal:Property>
                  <edoal:compose rdf:parseType="Collection">
                    <edoal:Relation rdf:about="https://w3id.org/i40/aml#hasAttribute"/>
                    <edoal:Property rdf:about="https://w3id.org/i40/aml#hasAttributeValue"/>
                  </edoal:compose>
                </edoal:Property>
              </edoal:property2>
            </edoal:Intersects>
          </edoal:binding>
        </edoal:Linkkey>
      </edoal:linkkey>
    </Cell>
  </map>
</Alignment>
</rdf:RDF>

This is the closest I have gotten so far.
Seems like the restriction is not supported with AND yet because the generated SPARQL also does not make sense.

PREFIX ns0:<https://w3id.org/i40/aml2#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX ns1:<https://w3id.org/i40/aml#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>

CONSTRUCT { ?s1 owl:sameAs ?s2 }
WHERE {
?s1 rdf:type ns0:RoleClass .
?s2 rdf:type ns1:RoleClass .
?s2 ns0:hasAttribute ?o3 .
?o3 ns1:hasAttributeName ?o2 .
FILTER (?o2='eClassVersion')
?s2 ns0:hasAttribute ?o5 .
?o5 ns1:hasAttributeName ?o4 .
FILTER (?o4='eClassClassificationClass')
?s2 ns0:hasAttribute ?o7 .
?o7 ns1:hasAttributeName ?o6 .
FILTER (?o6='eClassIRDI')
?s1 ns0:hasAttribute ?o10 .
?o10 ns0:hasAttributeValue ?o9 .
?s2 ns1:hasAttribute ?o13 .
?o13 ns1:hasAttributeValue ?o12 .
FILTER ( lcase(str(?o9)) = lcase(str(?o12)) )
}
@igrangel
Copy link
Contributor

The problem is that there are missing parts in the rule. It is not only comparing that the attributes are those eClassIRDI, eClassVersion, eClassClassification class it is also necessary to compare the values of those attributes by pair and this is not in the rule yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants