Logical Data Analysis for Egyptian Objects

From MaRDI portal
Workflow:6032641


Available identifiers

MaRDI QIDQ6032641

Problem statement

Common Destruction Patterns in Egyptian Objects from the Cachette de Karnak

Object of research and objective

Do Destruction Patterns Follow Specific Rules?

Involved disciplines

  1. Egyptology
  2. boolean algebra

Model

{{#sparql: SELECT ?Label ?Description ?Time ?Space WHERE {

  wd:Q6032641 wdt:P557 ?item .
  ?item wdt:P31 wd:Q68663;
        rdfs:label ?Label;
        schema:description ?Description;
        BIND(
             IF(EXISTS { ?item wdt:P31 wd:Q6672091 }, "continuous",
                        IF(EXISTS { ?item wdt:P31 wd:Q6672095 }, "discrete", 
                        "independent"
                          )
               ) AS ?Time
            )
        BIND(
             IF(EXISTS { ?item wdt:P31 wd:Q6672089 }, "continuous",
                        IF(EXISTS { ?item wdt:P31 wd:Q6672093 }, "discrete", 
                        "independent"
                          )
               ) AS ?Space
            )             

} | chart=bordercloud.visualization.DataTable | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Variables

{{#sparql: SELECT ?Name ?Unit ?Symbol ?Task (?Type AS ?Dependency_Type) WHERE {

  # Starting from the central item
  wd:Q6032641 p:P557 ?statement.
  ?statement ps:P557 ?model.
  ?statement pq:P147 ?task.
  ?model wdt:P31 wd:Q68663.
  ?task rdfs:label ?Task .
       
       # Define type based on connection type (Input or Output)
       {
           ?task p:P1560 ?inner_statement .
           ?inner_statement ps:P1560 ?item.
           ?inner_statement pq:P560 ?role.
           FILTER (?role = wd:Q6480299)
           ?item rdfs:label ?Name .
           BIND("independent" AS ?Type)
       }
       UNION
       {
           ?task p:P1560 ?inner_statement .
           ?inner_statement ps:P1560 ?item.
           ?inner_statement pq:P560 ?role.
           FILTER (?role = wd:Q6480295)
           ?item rdfs:label ?Name .
           BIND("dependent" AS ?Type)
       }
       
       # Filter results to only show defining statements that match the current quantity label
       OPTIONAL {
           ?task wdt:P1560 ?formulation.
           ?formulation wdt:P31 wd:Q6481152.
           ?formulation p:P983 ?inner_inner_statement .
           ?inner_inner_statement ps:P983 ?Symbol.
           ?inner_inner_statement pq:P984 ?quantity
       }
       FILTER (?quantity = ?item)
   BIND("" AS ?Unit)

} ORDER BY ?task ?item | chart=bordercloud.visualization.DataTable | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Parameters

{{#sparql: SELECT ?Name ?Unit ?Symbol ?Task WHERE {

  # Starting from the central item
  wd:Q6032641 p:P557 ?statement.
  ?statement ps:P557 ?model.
  ?statement pq:P147 ?task.
  ?model wdt:P31 wd:Q68663.
  ?task rdfs:label ?Task .
       
       # Define type based on connection type (Parameter)
       ?task p:P1560 ?inner_statement .
       ?inner_statement ps:P1560 ?item.
       ?inner_statement pq:P560 ?role.
       FILTER (?role = wd:Q6480341)
       ?item rdfs:label ?Name .
       
       # Filter results to only show defining statements that match the current quantity label
       OPTIONAL {
           ?task wdt:P1560 ?formulation.
           ?formulation wdt:P31 wd:Q6481152.
           ?formulation p:P983 ?inner_inner_statement .
           ?inner_inner_statement ps:P983 ?Symbol.
           ?inner_inner_statement pq:P984 ?quantity
       }
       FILTER (?quantity = ?item)
   BIND("" AS ?Unit)

} ORDER BY ?task ?item| chart=bordercloud.visualization.DataTable | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Process information

Process steps

{{#sparql: SELECT ?Number

      ?Name
      ?Description
      (GROUP_CONCAT(DISTINCT ?inputLink; separator=", ") AS ?Input)
      (GROUP_CONCAT(DISTINCT ?outputLink; separator=", ") AS ?Output)
      (GROUP_CONCAT(DISTINCT ?methodLink; separator=", ") AS ?Method)
      (GROUP_CONCAT(DISTINCT ?environmentLink; separator=", ") AS ?Environment)
      (GROUP_CONCAT(DISTINCT ?disciplineLink; separator=", ") AS ?Discipline)

WHERE {

 # Get Step Label and Description
 wd:Q6032641 p:P557 ?mainStatement.
 ?mainStatement ps:P557 ?stepID. 
 ?stepID wdt:P31 wd:Q6486603.            
 ?stepID rdfs:label ?NameLabel.               
 FILTER (lang(?NameLabel) = 'en')
 BIND(replace( xsd:string(?stepID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?qid)  
 
 BIND (CONCAT('<a href=\'/wiki/Item:',?qid,'\'>',?NameLabel,'</a>') as ?Name)
 
 ?mainStatement pq:P146 ?Number.
 
 OPTIONAL {
   ?stepID schema:description ?Description.
   FILTER (lang(?Description) = 'en')
 }
 
 # Get Step Input(s)
 OPTIONAL {
   ?stepID wdt:P1605 ?inputID.
   ?inputID rdfs:label ?inputLabel.
   FILTER (lang(?inputLabel) = 'en')
   BIND(replace( xsd:string(?inputID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?inputQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?inputQID,'\'>',?inputLabel,'</a>') as ?inputLink)
 }
 
 # Get Step Output(s)
 OPTIONAL {
   ?stepID wdt:P1606 ?outputID.
   ?outputID rdfs:label ?outputLabel.
   FILTER (lang(?outputLabel) = 'en')
   BIND(replace( xsd:string(?outputID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?outputQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?outputQID,'\'>',?outputLabel,'</a>') as ?outputLink)
 }
 
 # Get Step Method(s)
 OPTIONAL {
   ?stepID wdt:P557 ?methodID.
   ?methodID wdt:P31 wd:Q127020.
   ?methodID rdfs:label ?methodLabel.
   FILTER (lang(?methodLabel) = 'en')
   BIND(replace( xsd:string(?methodID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?methodQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?methodQID,'\'>',?methodLabel,'</a>') as ?methodLink)
 }
 
 # Get Step Environment(s)
 OPTIONAL {
   ?stepID wdt:P143 ?environmentID.
   ?environmentID rdfs:label ?environmentLabel.
   FILTER (lang(?environmentLabel) = 'en')
   BIND(replace( xsd:string(?environmentID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?environmentQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?environmentQID,'\'>',?environmentLabel,'</a>') as ?environmentLink)
 }
 
 # Get Step Discipline
 OPTIONAL {
   ?stepID wdt:P437 ?fieldID.
   ?fieldID rdfs:label ?fieldLabel.
   FILTER (lang(?fieldLabel) = 'en')
   BIND(replace( xsd:string(?fieldID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?fieldQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?fieldQID,'\'>',?fieldLabel,'</a>') as ?fieldLink)
 }
 OPTIONAL {
   ?stepID wdt:P226 ?mscID.
 }
 BIND(COALESCE(?fieldLink, ?mscID) AS ?disciplineLink)

} GROUP BY ?Name ?Description ?Number ORDER BY ASC(?Number) | chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Methods

{{#sparql: SELECT ?Name

      ?Description
      (GROUP_CONCAT(DISTINCT ?stepLink; separator=", ") AS ?Process_Step)
      (GROUP_CONCAT(DISTINCT ?softwareLink; separator=", ") AS ?Implemented_By)
      

WHERE {

 # Get Method Label and Description
 wd:Q6032641 p:P557 ?mainStatement.
 ?mainStatement ps:P557 ?methodID. 
 ?methodID wdt:P31 wd:Q127020.
 ?methodID rdfs:label ?NameLabel.               
 FILTER (lang(?NameLabel) = 'en')
 BIND(replace( xsd:string(?methodID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?qid)
 
 BIND (CONCAT('mardi:','<a href=\'/wiki/Item:',?qid,'\'>',?qid,'</a>') as ?ID)
 BIND (CONCAT('<a href=\'/wiki/Item:',?qid,'\'>',?NameLabel,'</a>') as ?Name)
 
 OPTIONAL {
   ?methodID schema:description ?Description.
   FILTER (lang(?Description) = 'en')
 }
 
 # Get Software
 OPTIONAL {
   ?mainStatement pq:P147 ?softwareID.
   ?softwareID rdfs:label ?softwareLabel.
   FILTER (lang(?softwareLabel) = 'en')
   BIND(replace( xsd:string(?softwareID),
       'https://portal.mardi4nfdi.de/entity/',
       ) as ?softwareQID)  
 
   BIND (CONCAT('<a href=\'/wiki/Item:',?softwareQID,'\'>',?softwareLabel,'</a>') as ?softwareLink)
 }
 
 # Get Process Step
 OPTIONAL {
   ?stepID wdt:P557 ?methodID.
   ?stepID rdfs:label ?stepLabel.
   FILTER (lang(?stepLabel) = 'en')
   BIND(replace( xsd:string(?stepID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?stepQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?stepQID,'\'>',?stepLabel,'</a>') as ?stepLink)
 }

} GROUP BY ?ID ?Name ?Description | chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Software

{{#sparql: SELECT ?Name

      ?Description
      ?Version
      (GROUP_CONCAT(DISTINCT ?plLink; separator=", ") AS ?Programming_Language)
      (GROUP_CONCAT(DISTINCT ?dpLink; separator=", ") AS ?Dependencies)
      ?versioned
      ?published
      ?documented
      

WHERE {

 # Get Software Label and Description
 wd:Q6032641 p:P557 ?mainStatement.
 ?mainStatement ps:P557 ?softwareID. 
 ?softwareID wdt:P1460 wd:Q5976450.
 ?softwareID rdfs:label ?NameLabel.               
 FILTER (lang(?NameLabel) = 'en')
 BIND(replace( xsd:string(?softwareID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?qid)
 
 BIND (CONCAT('mardi:','<a href=\'/wiki/Item:',?qid,'\'>',?qid,'</a>') as ?ID)
 BIND (CONCAT('<a href=\'/wiki/Item:',?qid,'\'>',?NameLabel,'</a>') as ?Name)
 
 OPTIONAL {
   ?softwareID schema:description ?Description.
   FILTER (lang(?Description) = 'en')
 }
 
 # Get Software Version
 OPTIONAL {
   ?mainStatement pq:P132 ?Version.
   }
   
 # Get Programming Language
 OPTIONAL {
   ?softwareID wdt:P114 ?plID.
   ?plID rdfs:label ?plLabel.
   FILTER (lang(?plLabel) = 'en')
   BIND(replace( xsd:string(?plID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?plQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?plQID,'\'>',?plLabel,'</a>') as ?plLink)
 }  
 # Get Dependencies
 OPTIONAL {
   ?softwareID wdt:P342 ?dpID.
   ?dpID rdfs:label ?dpLabel.
   FILTER (lang(?dpLabel) = 'en')
   BIND(replace( xsd:string(?dpID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?dpQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?dpQID,'\'>',?dpLabel,'</a>') as ?dpLink)
 }
 
 # Versioned
 BIND (IF(BOUND(?Version), "Yes", "No") AS ?versioned)
 
 # Published
 OPTIONAL {
   ?softwareID wdt:P339 ?srcREPO.
 }
 BIND (IF(BOUND(?srcREPO), CONCAT('<a href="', STR(?srcREPO), '">Yes</a>'), "No") AS ?published)
 
 # Documented
 OPTIONAL {
   ?softwareID wdt:P340 ?docu.
 }
 BIND (IF(BOUND(?docu), CONCAT('<a href="', STR(?docu), '">Yes</a>'), "No") AS ?documented)
 
}

GROUP BY ?ID ?Name ?Description ?Version ?versioned ?published ?documented | chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Hardware

{{#sparql: SELECT ?Name

      ?Description
      (GROUP_CONCAT(DISTINCT ?processorLink; separator=", ") AS ?Processor)
      (GROUP_CONCAT(DISTINCT ?nodes; separator=", ") AS ?Node_Number)
      (GROUP_CONCAT(DISTINCT ?cores; separator=", ") AS ?Core_Number)
      (GROUP_CONCAT(DISTINCT ?softwareLink; separator=", ") AS ?Software)
      

WHERE {

 # Get Hardware Label and Description
 wd:Q6032641 p:P557 ?mainStatement.
 ?mainStatement ps:P557 ?hardwareID. 
 ?hardwareID wdt:P31 wd:Q56583.
 ?hardwareID rdfs:label ?NameLabel.               
 FILTER (lang(?NameLabel) = 'en')
 BIND(replace( xsd:string(?hardwareID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?qid)
 
 BIND (CONCAT('mardi:','<a href=\'/wiki/Item:',?qid,'\'>',?qid,'</a>') as ?ID)
 BIND (CONCAT('<a href=\'/wiki/Item:',?qid,'\'>',?NameLabel,'</a>') as ?Name)
 
 OPTIONAL {
   ?hardwareID schema:description ?Description.
   FILTER (lang(?Description) = 'en')
 }
 
   # Get Processors(s), Nodes and Cores
 OPTIONAL {
   ?hardwareID p:P1540 ?mainStatement2.
   ?mainStatement2 ps:P1540 ?processorID.
   ?processorID rdfs:label ?processorLabel.
   ?processorID wdt:P1565 ?cores.
   FILTER (lang(?processorLabel) = 'en')
   BIND(replace( xsd:string(?processorID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?processorQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?processorQID,'\'>',?processorLabel,'</a>') as ?processorLink)
   # Get Number of Nodes
   OPTIONAL {
       ?mainStatement2 pq:P149 ?nodes.
   }
 }
 
 OPTIONAL {
   wd:Q6032641 p:P557 ?softwareStatement.
   ?softwareStatement ps:P557 ?softwareID; 
                      pq:P143 ?hardwareID.
   ?softwareID rdfs:label ?softwareLabel.
   FILTER (lang(?softwareLabel) = 'en')
   BIND(replace( xsd:string(?softwareID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?softwareQID)
   BIND (CONCAT('<a href=\'/wiki/Item:',?softwareQID,'\'>',?softwareLabel,'</a>') as ?softwareLink)
 }

} GROUP BY ?ID ?Name ?Description | chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Data Sets

{{#sparql: SELECT ?Name

      ?Description
      ?Size
      (?DataType AS ?Data_Type) 
      (?RepresentationFormat AS ?Representation_Format)
      (?FileFormat AS ?File_Format) 
      (?BinaryOrText AS ?Binary_Text)
      ?Proprietary
      (?toPublish AS ?to_Publish)
      (?toArchive AS ?to_Archive)
      

WHERE {

 # Get Step
 wd:Q6032641 p:P557 ?mainStatement.
 ?mainStatement ps:P557 ?stepID. 
 ?stepID wdt:P31 wd:Q6486603.            
 
 # Get Data
 OPTIONAL {
   {?stepID wdt:P1605 ?inputID.}
   UNION
   {?stepID wdt:P1606 ?inputID.}
   ?inputID rdfs:label ?NameLabel.
   FILTER (lang(?NameLabel) = 'en')
   
   BIND(replace( xsd:string(?inputID),
     'https://portal.mardi4nfdi.de/entity/',
     ) as ?qid)
   
   BIND(CONCAT('mardi:','<a href=\'/wiki/Item:',?qid,'\'>',?qid,'</a>') as ?ID)
   BIND(CONCAT('<a href=\'/wiki/Item:',?qid,'\'>',?NameLabel,'</a>') as ?Name)
 OPTIONAL {
   ?inputID schema:description ?Description.
   FILTER (lang(?Description) = 'en')}
 # Data Size (maps to Size if File etc size is provided)
 OPTIONAL {
   ?inputID p:P1542 ?statementNode.          
   ?statementNode psv:P1542 ?valueNode.      
   ?valueNode wikibase:quantityAmount ?size; 
              wikibase:quantityUnit ?unit.
   ?unit rdfs:label ?unitlabel.
   FILTER (lang(?unitlabel) = 'en')
   BIND(CONCAT(STR(?size), ' ', STR(?unitlabel)) AS ?Size)

}

 # Number of Records (maps to Size if Number of Entries in a Database etc is provided
 OPTIONAL {
   ?inputID wdt:P139 ?Sizeraw
   BIND(CONCAT(STR(?Sizeraw),' Items') as ?Size)
 }
 
 # Data Type
 OPTIONAL {
   ?inputID p:P557 ?statement_dt.
   ?statement_dt ps:P557 ?datatypeID. 
   ?statement_dt pq:P560 ?qualifier.
   FILTER (?qualifier = wd:Q78802)
   ?datatypeID rdfs:label ?datatypeLabel.   
   FILTER (lang(?datatypeLabel) = 'en')
   BIND(replace( xsd:string(?datatypeID),
       'https://portal.mardi4nfdi.de/entity/',
       ) as ?datatypeQID)  
 
   BIND (CONCAT('<a href=\'/wiki/Item:',?datatypeQID,'\'>',?datatypeLabel,'</a>') as ?DataType)
   }
   
 # Representation Format
 OPTIONAL {
   ?inputID p:P557 ?statement_rf.
   ?statement_rf ps:P557 ?representationID. 
   ?statement_rf pq:P560 ?qualifier2.
   FILTER (?qualifier2 = wd:Q6534222)
   ?representationID rdfs:label ?representationLabel.   
   FILTER (lang(?representationLabel) = 'en')
   BIND(replace( xsd:string(?representationID),
       'https://portal.mardi4nfdi.de/entity/',
       ) as ?representationQID)  
 
   BIND (CONCAT('<a href=\'/wiki/Item:',?representationQID,'\'>',?representationLabel,'</a>') as ?RepresentationFormat)
   }
   
 # File Format
 OPTIONAL {
   ?inputID wdt:P921 ?FileFormat
   }
  
 # Binary or Text
 BIND(IF(EXISTS { ?inputID wdt:P31 wd:Q6480276 }, "binary", IF(EXISTS { ?inputID wdt:P31 wd:Q6534207 }, "text", "" )) AS ?BinaryOrText)
 
 # Proprietary
 BIND(IF(EXISTS { ?inputID wdt:P31 wd:Q6480367 }, "yes", IF(EXISTS { ?inputID wdt:P31 wd:Q6480313 }, "no", "" )) AS ?Proprietary)
 
 # Bind DOI and URL if they exist
 OPTIONAL { ?inputID wdt:P23 ?doi. }
 OPTIONAL { ?inputID wdt:P188 ?url. }
 
 # Data Publishing
 BIND(
 IF(EXISTS { ?inputID wdt:P1563 wd:Q6480291 }, 
    IF(EXISTS { ?inputID wdt:P27 ?doi }, 
       CONCAT('<a href="', 'https://dx.doi.org', STR(?doi), '">yes</a>'), 
       IF(EXISTS { ?inputID wdt:P188 ?url }, 
          CONCAT('<a href="', STR(?url), '">yes</a>'), 
          "yes"
       )
    ), 
    "no"
 ) AS ?toPublish

)

  1. Data Archiving
 OPTIONAL {
 ?inputID p:P1563 ?statementNode.
 ?statementNode ps:P1563 wd:Q6480370.
 OPTIONAL {
   ?statementNode pq:P411 ?endTime.
 }

}

BIND(

 IF(BOUND(?statementNode),
    IF(BOUND(?endTime),
       SUBSTR(STR(?endTime), 1, 4),
       "yes"
    ),
    "no"
 ) AS ?toArchive

)

 }

} GROUP BY ?ID ?Name ?Description ?Size ?DataType ?RepresentationFormat ?FileFormat ?BinaryOrText ?Proprietary ?toPublish ?toArchive

| chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}

Reproducibility

{{#sparql: SELECT ?Mathematically

      ?Runtime
      ?Result
      (?OriginalPlatform AS ?Original_Platform)
      (?CrossPlatform AS ?Cross_Platform)
      ?Transferability
      

WHERE {

 # Mathematical Reproducibility
 OPTIONAL {
   wd:Q6032641 p:P31 ?math_statement.
   ?math_statement ps:P31 wd:Q6534210.
   BIND("Yes" AS ?math_hasTriple)
   OPTIONAL {
     ?math_statement pq:P8 ?math_text.
     BIND(CONCAT("Yes: ", STR(?math_text)) AS ?math_result)
     }
 }
 BIND(IF(BOUND(?math_result), ?math_result, IF(BOUND(?math_hasTriple), "Yes", "No")) AS ?Mathematically)
 
 # Runtime Reproducibility
 OPTIONAL {
   wd:Q6032641 p:P31 ?run_statement.
   ?run_statement ps:P31 wd:Q6534211.
   BIND("Yes" AS ?run_hasTriple)
   OPTIONAL {
     ?run_statement pq:P8 ?run_text.
     BIND(CONCAT("Yes: ", STR(?run_text)) AS ?run_result)
     }
 }
 BIND(IF(BOUND(?run_result), ?run_result, IF(BOUND(?run_hasTriple), "Yes", "No")) AS ?Runtime)
 
 # Result Reproducibility
 OPTIONAL {
   wd:Q6032641 p:P31 ?res_statement.
   ?res_statement ps:P31 wd:Q6534212.
   BIND("Yes" AS ?res_hasTriple)
   OPTIONAL {
     ?res_statement pq:P8 ?res_text.
     BIND(CONCAT("Yes: ", STR(?res_text)) AS ?res_result)
     }
 }
 BIND(IF(BOUND(?res_result), ?res_result, IF(BOUND(?res_hasTriple), "Yes", "No")) AS ?Result)
 
 # Original Platform Reproducibility
 OPTIONAL {
   wd:Q6032641 p:P31 ?plat_statement.
   ?plat_statement ps:P31 wd:Q6534213.
   BIND("Yes" AS ?plat_hasTriple)
   OPTIONAL {
     ?plat_statement pq:P8 ?plat_text.
     BIND(CONCAT("Yes: ", STR(?plat_text)) AS ?plat_result)
     }
 }
 BIND(IF(BOUND(?plat_result), ?plat_result, IF(BOUND(?plat_hasTriple), "Yes", "No")) AS ?OriginalPlatform)
 
 # Cross Platform Reproducibility
 OPTIONAL {
   wd:Q6032641 p:P31 ?xplat_statement.
   ?xplat_statement ps:P31 wd:Q6534214.
   BIND("Yes" AS ?xplat_hasTriple)
   OPTIONAL {
     ?xplat_statement pq:P8 ?xplat_text.
     BIND(CONCAT("Yes: ", STR(?xplat_text)) AS ?xplat_result)
     }
 }
 BIND(IF(BOUND(?xplat_result), ?xplat_result, IF(BOUND(?xplat_hasTriple), "Yes", "No")) AS ?CrossPlatform)
 
 # Transferability 
 OPTIONAL {
   wd:Q6032641 p:P31 ?trans_statement.
   ?trans_statement ps:P31 wd:Q6534215.
   BIND("Yes" AS ?trans_hasTriple)
   OPTIONAL {
     ?trans_statement pq:P8 ?trans_text.
     BIND(CONCAT("Yes: ", STR(?trans_text)) AS ?trans_result)
     }
 }
 BIND(IF(BOUND(?trans_result), ?trans_result, IF(BOUND(?trans_hasTriple), "Yes", "No")) AS ?Transferability)

} GROUP BY ?Mathematically ?Runtime ?Result ?OriginalPlatform ?CrossPlatform ?Transferability

| chart=bordercloud.visualization.DataTable | options=width=100%! | endpoint=https://query.portal.mardi4nfdi.de/sparql }}